
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

Bitmask __regparm3
sqlite3WhereCodeOneLoopStart
          (Parse *pParse,Vdbe *v,WhereInfo *pWInfo,int iLevel,WhereLevel *pLevel,Bitmask notReady)

{
  WhereClause *pWC;
  u32 *puVar1;
  short *psVar2;
  byte bVar3;
  char aff2;
  ushort uVar4;
  ushort uVar5;
  sqlite3 *db;
  int iVar6;
  SrcList *pSVar7;
  Expr *p1;
  WhereOrInfo *pWVar8;
  ExprList *pEVar9;
  Table *pTVar10;
  Column *pCVar11;
  LookasideSlot *pLVar12;
  SrcList *pSVar13;
  i16 *piVar14;
  bool bVar15;
  code *pcVar16;
  ushort uVar17;
  bool bVar18;
  Bitmask BVar19;
  _func_int_Walker_ptr_Expr_ptr *p_Var20;
  char cVar21;
  u8 uVar22;
  byte bVar23;
  short sVar24;
  uint uVar25;
  int iVar26;
  char *pcVar27;
  int iVar28;
  Expr *p1_00;
  WhereTerm *pWVar29;
  int iVar30;
  Expr *pEVar31;
  WhereInfo *pWInfo_00;
  Parse *pPVar32;
  Op *pOVar33;
  WhereTerm **ppWVar34;
  Expr *pEVar35;
  SrcList *pSVar36;
  Parse *pPVar37;
  Expr *pEVar38;
  SrcList *pTabList;
  int *piVar39;
  ushort uVar40;
  uint uVar41;
  Expr *pEVar42;
  sqlite3_context *iEq;
  int extraout_ECX;
  int extraout_ECX_00;
  uint extraout_ECX_01;
  uint extraout_ECX_02;
  uint extraout_ECX_03;
  WhereLevel *pWVar43;
  int iVar44;
  u8 *puVar45;
  uint uVar46;
  sqlite3_context *p2;
  sqlite3_context *psVar47;
  WhereTerm *pWVar48;
  int iVar49;
  uint uVar50;
  Index *pIVar51;
  Vdbe *pVVar52;
  int p2_00;
  uint uVar53;
  WhereTerm *pWVar54;
  SrcList_item *pSVar55;
  undefined4 *puVar56;
  sqlite3_context *psVar57;
  int iVar58;
  undefined4 *puVar59;
  int in_GS_OFFSET;
  bool bVar60;
  Expr *in_stack_fffffe58;
  Expr *in_stack_fffffe64;
  int in_stack_fffffe68;
  WhereLoop *pWVar61;
  anon_union_4_2_996c0f8d_for_u1 *paVar62;
  WhereLoop *pWVar63;
  int local_184;
  uint local_17c;
  Expr *local_168;
  Index *local_158;
  uint local_154;
  uint local_148;
  char *local_144;
  Expr *local_140;
  Index *local_13c;
  int local_138;
  Expr *local_134;
  WhereTerm *local_12c;
  Expr *local_128;
  WhereTerm *local_120;
  uint local_118;
  Walker w;
  IdxExprTrans x_1;
  int rTemp;
  _func_int_Walker_ptr_Expr_ptr *local_b4;
  anon_union_4_2_443a03b8_for_u local_b0;
  Expr *local_ac;
  Expr *local_a8;
  anon_union_4_2_a01b6dbf_for_x local_a4;
  anon_union_4_16_1c331a60_for_u local_a0;
  int local_9c;
  undefined4 local_98;
  undefined4 local_94;
  AggInfo *local_90;
  anon_union_8_3_c79b3df9_for_y local_8c;
  WhereScan scan;
  u8 aMoveOp [4];
  Token x;
  
  bVar23 = 0;
  db = pParse->db;
  pWVar63 = pLevel->pWLoop;
  uVar25 = (uint)pLevel->iFrom;
  iVar6 = *(int *)(in_GS_OFFSET + 0x14);
  pWC = &pWInfo->sWC;
  pSVar7 = pWInfo->pTabList;
  p1 = (Expr *)pSVar7->a[uVar25].iCursor;
  uVar53 = (pWInfo->sMaskSet).n;
  BVar19 = notReady;
  if (0 < (int)uVar53) {
    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {
      uVar50 = 0xfffffffe;
      uVar53 = 0xffffffff;
    }
    else {
      uVar50 = 0;
      do {
        uVar41 = uVar50 + 1;
        if (uVar53 == uVar41) goto LAB_0009a9fc;
        iVar58 = uVar50 + 1;
        uVar50 = uVar41;
      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);
      bVar60 = (uVar41 & 0x20) == 0;
      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));
      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));
    }
    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);
  }
LAB_0009a9fc:
  pLevel->notReady = BVar19;
  uVar53 = *(uint *)((int)&pWInfo->revMask + 4);
  BVar19 = pWInfo->revMask;
  iVar58 = pParse->nLabel + -1;
  pParse->nLabel = iVar58;
  pLevel->addrNxt = iVar58;
  pLevel->addrBrk = iVar58;
  p2_00 = pParse->nLabel + -1;
  pParse->nLabel = p2_00;
  pLevel->addrCont = p2_00;
  if ((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)) {
    iVar26 = pParse->nMem + 1;
    pParse->nMem = iVar26;
    pLevel->iLeftJoin = iVar26;
    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);
  }
  if (iLevel == 0) {
    iVar26 = 0;
  }
  else {
    iVar26 = iLevel;
    if (pWInfo->a[iLevel].iLeftJoin == 0) {
      pWVar43 = pWInfo->a + iLevel + -1;
      do {
        iVar26 = iVar26 + -1;
        if (iVar26 == 0) break;
        piVar39 = &pWVar43->iLeftJoin;
        pWVar43 = pWVar43 + -1;
      } while (*piVar39 == 0);
    }
  }
  bVar3 = pSVar7->a[uVar25].fg.field_0x1;
  if ((bVar3 & 0x10) == 0) {
    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);
    if ((iLevel & 0x20U) != 0) {
      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);
    }
    pEVar42 = (Expr *)(uVar50 & 1);
    uVar53 = pWVar63->wsFlags;
    if ((uVar53 & 0x400) == 0) {
      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {
        iVar26 = pWInfo->a[iVar26].addrBrk;
        if ((uVar53 & 0x102) == 0x102) {
          if ((uVar53 & 0x20) == 0) {
            if ((uVar53 & 0x10) != 0) {
              iVar28 = 0;
              pWVar54 = (WhereTerm *)0x0;
              ppWVar34 = pWVar63->aLTerm;
LAB_0009c28b:
              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);
              if (pEVar42 == (Expr *)0x0) {
                pWVar29 = pWVar48;
                if (pWVar54 == (WhereTerm *)0x0) {
                  iVar28 = 0x25;
                  goto LAB_0009c549;
                }
              }
              else {
                pWVar29 = pWVar54;
                pWVar54 = pWVar48;
                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;
              }
LAB_0009c2a8:
              pEVar31 = pWVar54->pExpr;
              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);
              pEVar38 = pEVar31->pRight;
              uVar22 = pEVar38->op;
              if (uVar22 == 0xad) {
                uVar22 = pEVar38->op2;
              }
              if (uVar22 == 0xae) {
                iVar26 = ((pEVar38->x).pList)->nExpr;
LAB_0009cf97:
                if (iVar26 < 2) goto LAB_0009c2d7;
                if (pParse->nTempReg == '\0') {
                  pEVar35 = (Expr *)(pParse->nMem + 1);
                  pParse->nMem = (int)pEVar35;
                }
                else {
                  bVar23 = pParse->nTempReg - 1;
                  pParse->nTempReg = bVar23;
                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];
                }
                rTemp = (int)pEVar35;
                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);
                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];
              }
              else {
                if (uVar22 == 0x88) {
                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;
                  goto LAB_0009cf97;
                }
LAB_0009c2d7:
                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);
                disableTerm(pLevel,pWVar54);
                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);
              }
              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);
              if (rTemp != 0) {
                sqlite3ReleaseTempReg(pParse,rTemp);
              }
              goto LAB_0009c32f;
            }
            if (pEVar42 != (Expr *)0x0) {
              pWVar48 = (WhereTerm *)0x0;
              iVar28 = 0x21;
              goto LAB_0009c549;
            }
LAB_0009bc9a:
            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);
            iVar58 = v->nOp;
            pEVar35 = in_stack_fffffe58;
LAB_0009bcbb:
            pLevel->op = '\x05';
          }
          else {
            ppWVar34 = pWVar63->aLTerm;
            pWVar54 = *ppWVar34;
            if ((uVar53 & 0x10) != 0) {
              iVar28 = 4;
              goto LAB_0009c28b;
            }
            pWVar29 = pWVar54;
            if (pEVar42 == (Expr *)0x0) {
              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;
              pWVar29 = (WhereTerm *)0x0;
              goto LAB_0009c2a8;
            }
LAB_0009c544:
            pWVar48 = pWVar29;
            iVar28 = 0x21;
LAB_0009c549:
            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);
            pWVar29 = pWVar48;
            pEVar35 = in_stack_fffffe58;
LAB_0009c32f:
            if (pWVar29 != (WhereTerm *)0x0) {
              pEVar31 = pWVar29->pExpr;
              pEVar38 = pEVar31->pRight;
              iVar26 = pParse->nMem + 1;
              pParse->nMem = iVar26;
              codeExprOrVector(pParse,pEVar38,iVar26,1);
              pEVar38 = pEVar31->pRight;
              uVar22 = pEVar38->op;
              if (uVar22 == 0xad) {
                uVar22 = pEVar38->op2;
              }
              if (uVar22 == 0xae) {
                iVar28 = ((pEVar38->x).pList)->nExpr;
LAB_0009ca64:
                if (iVar28 < 2) goto LAB_0009c37b;
LAB_0009ca6d:
                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;
              }
              else {
                if (uVar22 == 0x88) {
                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;
                  goto LAB_0009ca64;
                }
LAB_0009c37b:
                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;
                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;
              }
              if (uVar22 == 0xae) {
                iVar44 = ((pEVar38->x).pList)->nExpr;
LAB_0009d05c:
                if (iVar44 < 2) goto LAB_0009c3ac;
              }
              else {
                if (uVar22 == 0x88) {
                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;
                  goto LAB_0009d05c;
                }
LAB_0009c3ac:
                disableTerm(pLevel,pWVar29);
              }
              iVar44 = v->nOp;
              if (pEVar42 == (Expr *)0x0) {
                pLevel->op = '\x05';
                pLevel->p2 = iVar44;
                pLevel->p1 = (int)p1;
              }
              else {
                pLevel->op = '\x04';
                pLevel->p2 = iVar44;
                pLevel->p1 = (int)p1;
              }
              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);
              pParse->nMem = (int)in_stack_fffffe58;
              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);
              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);
              if (0 < v->nOp) {
                local_158 = (Index *)0x0;
                uVar53 = 2;
                v->aOp[v->nOp + -1].p5 = 0x53;
                goto LAB_0009b200;
              }
              goto LAB_0009b1e0;
            }
            iVar58 = v->nOp;
            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;
            pLevel->op = '\x04';
          }
          pLevel->p2 = iVar58;
          local_158 = (Index *)0x0;
          uVar53 = 2;
          pLevel->p1 = (int)p1;
          in_stack_fffffe58 = pEVar35;
          goto LAB_0009b200;
        }
        if ((uVar53 & 0x200) == 0) {
          if ((uVar53 & 0x2000) == 0) {
            if ((bVar3 & 0x20) == 0) {
              iVar58 = pEVar42[0x429a].iTable;
              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);
              pLevel->p1 = (int)p1;
              pLevel->op = (u8)iVar58;
              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);
              pLevel->p5 = '\x01';
              pLevel->p2 = iVar58 + 1;
              goto LAB_0009b1e0;
            }
            pLevel->op = 0xad;
            local_158 = (Index *)0x0;
            uVar53 = 2;
            goto LAB_0009b200;
          }
          pEVar9 = (ExprList *)pParse->nTab;
          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);
          iVar58 = pParse->nMem + 1;
          iVar26 = pParse->nLabel + -1;
          pParse->nMem = iVar58;
          pParse->nLabel = iVar26;
          pTVar10 = pSVar7->a[uVar25].pTab;
          pWVar54 = *pWVar63->aLTerm;
          pWVar8 = (pWVar54->u).pOrInfo;
          pLevel->op = 'A';
          pLevel->p1 = iVar58;
          if (pWInfo->nLevel < 2) {
            pTabList = pWInfo->pTabList;
          }
          else {
            uVar53 = (uint)pWInfo->nLevel - iLevel;
            iVar28 = (uVar53 - 1) * 0x44;
            uVar50 = iVar28 + 0x4c;
            if (db == (sqlite3 *)0x0) {
              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;
              if (sqlite3Config.bMemstat == 0) {
                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);
              }
              else {
                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));
              }
LAB_0009d302:
              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;
            }
            else {
              if ((db->lookaside).sz < uVar50) {
                if ((db->lookaside).bDisable == 0) {
                  puVar1 = (db->lookaside).anStat + 1;
                  *puVar1 = *puVar1 + 1;
                }
                else if (db->mallocFailed != '\0') goto LAB_0009b549;
LAB_0009d2f9:
                pTabList = (SrcList *)
                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));
                goto LAB_0009d302;
              }
              if (uVar50 < 0x81) {
                pTabList = (SrcList *)(db->lookaside).pSmallFree;
                if (pTabList == (SrcList *)0x0) {
                  pTabList = (SrcList *)(db->lookaside).pSmallInit;
                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;
                  pLVar12 = (LookasideSlot *)pTabList->nSrc;
                  puVar1 = (db->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (db->lookaside).pSmallInit = pLVar12;
                }
                else {
                  pLVar12 = (LookasideSlot *)pTabList->nSrc;
                  puVar1 = (db->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (db->lookaside).pSmallFree = pLVar12;
                }
              }
              else {
LAB_0009d46c:
                pTabList = (SrcList *)(db->lookaside).pFree;
                if (pTabList == (SrcList *)0x0) {
                  pTabList = (SrcList *)(db->lookaside).pInit;
                  if (pTabList == (SrcList *)0x0) {
                    puVar1 = (db->lookaside).anStat + 2;
                    *puVar1 = *puVar1 + 1;
                    goto LAB_0009d2f9;
                  }
                  pLVar12 = (LookasideSlot *)pTabList->nSrc;
                  puVar1 = (db->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (db->lookaside).pInit = pLVar12;
                }
                else {
                  pLVar12 = (LookasideSlot *)pTabList->nSrc;
                  puVar1 = (db->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (db->lookaside).pFree = pLVar12;
                }
              }
            }
            pTabList->nAlloc = (u32)(uVar53 & 0xff);
            pTabList->nSrc = (int)(uVar53 & 0xff);
            pSVar55 = pSVar7->a + uVar25;
            pTabList->a[0].pSchema = pSVar55->pSchema;
            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;
            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);
            iVar28 = (int)pTabList + (8 - (int)puVar59);
            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);
            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {
              *puVar59 = *puVar56;
              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;
              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;
            }
            pSVar13 = pWInfo->pTabList;
            if (0 < (int)(uVar53 - 1)) {
              puVar45 = &pLevel[1].iFrom;
              pSVar36 = pTabList + 1;
              do {
                bVar3 = *puVar45;
                puVar45 = puVar45 + 0x54;
                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);
                pSVar55 = pSVar13->a + bVar3;
                pSVar36->nSrc = (int)pSVar55->pSchema;
                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;
                paVar62 = &pSVar36->a[0].u1;
                iVar28 = (int)pSVar36 - (int)puVar59;
                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);
                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {
                  *puVar59 = *puVar56;
                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;
                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;
                }
                pSVar36 = (SrcList *)paVar62;
              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=
                       paVar62);
            }
          }
          if ((pWInfo->wctrlFlags & 0x10) == 0) {
            if ((pTVar10->tabFlags & 0x80) != 0) {
              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {
                if ((pIVar51->field_0x37 & 3) == 2) {
                  local_138 = pParse->nTab;
                  pParse->nTab = local_138 + 1;
                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);
                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);
                  goto LAB_0009b879;
                }
              }
              pParse->nTab = pParse->nTab + 1;
              goto LAB_0009ca50;
            }
            local_138 = pParse->nMem + 1;
            pParse->nMem = local_138;
            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);
LAB_0009b879:
            local_140 = (Expr *)(pParse->nMem + 1);
            pParse->nMem = (int)local_140;
          }
          else {
            local_140 = (Expr *)0x0;
            local_138 = 0;
          }
          iVar49 = 0;
          pEVar42 = (Expr *)0x0;
          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);
          iVar28 = (pWInfo->sWC).nTerm;
          iVar44 = extraout_ECX;
          if (iVar28 < 2) {
LAB_0009d0ac:
            local_134 = (Expr *)0x0;
          }
          else {
            do {
              pWVar29 = (pWInfo->sWC).a + iVar49;
              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&
                 ((pWVar29->eOperator & 0x1fff) != 0)) {
                pEVar31 = pWVar29->pExpr;
                if (pEVar31 != (Expr *)0x0) {
                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);
                }
                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);
                iVar28 = (pWInfo->sWC).nTerm;
                iVar44 = extraout_ECX_00;
              }
              iVar49 = iVar49 + 1;
            } while (iVar49 < iVar28);
            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;
            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);
          }
          uVar40 = pWInfo->wctrlFlags;
          in_stack_fffffe58 = (Expr *)&DAT_00000001;
          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");
          iVar28 = (pWVar8->wc).nTerm;
          if (iVar28 < 1) {
            iVar58 = pParse->addrExplain;
            if (iVar58 != 0) {
              pVVar52 = pParse->pVdbe;
              local_13c = (Index *)0x0;
              bVar60 = false;
              goto LAB_0009cb9d;
            }
            (pLevel->u).in.nIn = 0;
            bVar60 = false;
          }
          else {
            bVar60 = false;
            local_13c = (Index *)0x0;
            iVar44 = 0;
            do {
              pWVar29 = (pWVar8->wc).a + iVar44;
              iVar49 = iVar44 + 1;
              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {
                if (local_134 != (Expr *)0x0) {
                  local_134->pLeft = pWVar29->pExpr;
                }
                in_stack_fffffe58 = (Expr *)&DAT_00000001;
                pPVar32 = pParse;
                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);
                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,
                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9
                                              ,(u16)pPVar32,(int)in_stack_fffffe58);
                if (pWInfo_00 != (WhereInfo *)0x0) {
                  pPVar32 = pParse->pToplevel;
                  if (pParse->pToplevel == (Parse *)0x0) {
                    pPVar32 = pParse;
                  }
                  if (pPVar32->explain == '\x02') {
                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);
                  }
                  if ((pWInfo->wctrlFlags & 0x10) == 0) {
                    if ((pWVar8->wc).nTerm + -1 == iVar44) {
                      iVar44 = -1;
                    }
                    if ((pTVar10->tabFlags & 0x80) == 0) {
                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);
                      in_stack_fffffe58 = local_140;
                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);
                      if (v->db->mallocFailed == '\0') {
                        pOVar33 = v->aOp;
                        pOVar33[iVar28].p4type = -3;
                        pOVar33[iVar28].p4.i = iVar44;
                      }
                    }
                    else {
                      pIVar51 = pTVar10->pIndex;
                      while( true ) {
                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;
                        if ((pIVar51->field_0x37 & 3) == 2) break;
                        pIVar51 = pIVar51->pNext;
                      }
                      uVar53 = (uint)pIVar51->nKeyCol;
                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);
                      if (uVar53 != 0) {
                        iVar28 = 0;
                        pEVar31 = pEVar42;
                        do {
                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);
                          iVar28 = iVar28 + 2;
                          sqlite3ExprCodeGetColumnOfTable
                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);
                          pEVar31 = (Expr *)&pEVar31->affExpr;
                        } while (uVar53 * 2 != iVar28);
                      }
                      in_stack_fffffe58 = pEVar42;
                      if (iVar44 == 0) {
                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);
                        iVar28 = 0;
                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);
                        uVar50 = extraout_ECX_01;
                      }
                      else {
                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);
                        uVar50 = extraout_ECX_02;
                        if (v->db->mallocFailed == '\0') {
                          pOVar33 = v->aOp;
                          pOVar33[iVar28].p4type = -3;
                          pOVar33[iVar28].p4.i = uVar53;
                          uVar50 = uVar53;
                        }
                        if (-1 < iVar44) {
                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);
                          in_stack_fffffe58 = pEVar42;
                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);
                          uVar50 = extraout_ECX_03;
                          if (0 < v->nOp) {
                            v->aOp[v->nOp + -1].p5 = 0x10;
                          }
                        }
                      }
                      if (uVar53 == 1) {
                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);
                      }
                      else if (pParse->nRangeReg < (int)uVar53) {
                        pParse->nRangeReg = uVar53;
                        pParse->iRangeReg = (int)pEVar42;
                      }
                    }
                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);
                    if (iVar28 != 0) {
                      if (iVar28 < 0) {
                        iVar28 = v->nOp + -1;
                      }
                      pOVar33 = (Op *)&dummy_22674;
                      if (v->db->mallocFailed == '\0') {
                        pOVar33 = v->aOp + iVar28;
                      }
                      pOVar33->p2 = v->nOp;
                    }
                  }
                  else {
                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);
                  }
                  bVar18 = true;
                  if ((pWInfo_00->field_0x30 & 2) == 0) {
                    bVar18 = bVar60;
                  }
                  bVar60 = bVar18;
                  pWVar63 = pWInfo_00->a[0].pWLoop;
                  if (((pWVar63->wsFlags & 0x200) == 0) ||
                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))
                  {
                    local_13c = (Index *)0x0;
                  }
                  else {
                    local_13c = pIVar51;
                    if (((pTVar10->tabFlags & 0x80) != 0) &&
                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {
                      local_13c = pIVar51;
                    }
                  }
                  sqlite3WhereEnd(pWInfo_00);
                  iVar28 = pParse->addrExplain;
                  if (iVar28 != 0) {
                    pVVar52 = pParse->pVdbe;
                    if (iVar28 < 0) {
                      iVar28 = pVVar52->nOp + -1;
                    }
                    pOVar33 = (Op *)&dummy_22674;
                    if (pVVar52->db->mallocFailed == '\0') {
                      pOVar33 = pVVar52->aOp + iVar28;
                    }
                    iVar28 = pOVar33->p2;
                  }
                  pParse->addrExplain = iVar28;
                }
                iVar28 = (pWVar8->wc).nTerm;
              }
              iVar44 = iVar49;
            } while (iVar49 < iVar28);
            iVar58 = pParse->addrExplain;
            if (iVar58 != 0) {
              pVVar52 = pParse->pVdbe;
LAB_0009cb9d:
              if (iVar58 < 0) {
                iVar58 = pVVar52->nOp + -1;
              }
              pOVar33 = (Op *)&dummy_22674;
              if (pVVar52->db->mallocFailed == '\0') {
                pOVar33 = pVVar52->aOp + iVar58;
              }
              iVar58 = pOVar33->p2;
            }
            pParse->addrExplain = iVar58;
            (pLevel->u).in.nIn = (int)local_13c;
            if (local_13c != (Index *)0x0) {
              pLevel->iIdxCur = (int)pEVar9;
            }
          }
          if (local_134 != (Expr *)0x0) {
            local_134->pLeft = (Expr *)0x0;
            sqlite3ExprDeleteNN(db,local_134);
          }
          iVar58 = v->nOp + -1;
          if (-1 < iVar30) {
            iVar58 = iVar30;
          }
          pOVar33 = (Op *)&dummy_22674;
          if (v->db->mallocFailed == '\0') {
            pOVar33 = v->aOp + iVar58;
          }
          pOVar33->p1 = v->nOp;
          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);
          sqlite3VdbeResolveLabel(v,iVar26);
          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {
            sqlite3DbFreeNN(db,pTabList);
          }
          if (!bVar60) {
            disableTerm(pLevel,pWVar54);
            local_158 = (Index *)0x0;
            uVar53 = 2;
            goto LAB_0009b200;
          }
          goto LAB_0009b1e0;
        }
        uVar40 = (pWVar63->u).btree.nTop;
        uVar4 = (pWVar63->u).btree.nEq;
        local_118 = (uint)uVar4;
        uVar5 = (pWVar63->u).btree.nBtm;
        local_158 = (pWVar63->u).btree.pIndex;
        pEVar31 = (Expr *)pLevel->iIdxCur;
        if ((uVar53 & 0x20) == 0) {
          uVar46 = 0;
          local_120 = (WhereTerm *)0x0;
          uVar41 = local_118;
        }
        else {
          uVar46 = (uint)uVar5;
          local_120 = pWVar63->aLTerm[local_118];
          uVar41 = local_118 + 1;
        }
        pEVar38 = (Expr *)pParse->nMem;
        local_168 = (Expr *)&pEVar38->affExpr;
        if ((uVar53 & 0x10) == 0) {
          bVar60 = false;
          local_12c = (WhereTerm *)0x0;
        }
        else {
          local_12c = pWVar63->aLTerm[uVar41];
          if (uVar46 < uVar40) {
            uVar46 = (uint)uVar40;
          }
          if ((local_12c->wtFlags & 0x100) != 0) {
            pParse->nMem = (int)local_168;
            pLevel->iLikeRepCntr = (u32)local_168;
            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);
            pLevel->addrLikeRep = v->nOp;
            uVar53 = pLevel->iLikeRepCntr * 2;
            pLevel->iLikeRepCntr = uVar53;
            pLevel->iLikeRepCntr =
                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;
            uVar53 = pWVar63->wsFlags;
            pEVar38 = (Expr *)pParse->nMem;
            local_168 = (Expr *)&pEVar38->affExpr;
          }
          bVar60 = false;
          if (local_120 == (WhereTerm *)0x0) {
            iVar58 = (int)local_158->aiColumn[local_118];
            if (iVar58 < 0) {
              bVar60 = iVar58 == -2;
            }
            else {
              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';
            }
          }
        }
        local_128 = (Expr *)0x0;
        if ((uVar53 & 0x80030) == 0x80000) {
          iVar58 = pLevel->iLeftJoin;
          pParse->nMem = (int)local_168;
          pLevel->regBignull = (int)local_168;
          pEVar38 = local_168;
          if (iVar58 != 0) {
            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);
            pEVar38 = (Expr *)pParse->nMem;
          }
          bVar60 = true;
          uVar46 = 1;
          iVar58 = pParse->nLabel + -1;
          pParse->nLabel = iVar58;
          local_128 = local_168;
          pLevel->addrBignull = iVar58;
          local_168 = (Expr *)&pEVar38->affExpr;
        }
        if (uVar4 < local_158->nKeyCol) {
          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)
          goto LAB_0009c48d;
LAB_0009ac34:
          uVar17 = uVar40;
          bVar60 = false;
          bVar18 = bVar60;
        }
        else {
          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;
LAB_0009c48d:
          pWVar54 = local_12c;
          bVar18 = false;
          local_12c = local_120;
          uVar17 = uVar5 & 0xff;
          local_120 = pWVar54;
          uVar5 = uVar40;
        }
        pVVar52 = pParse->pVdbe;
        pWVar61 = pLevel->pWLoop;
        uVar40 = pWVar61->nSkip;
        iEq = (sqlite3_context *)(uint)uVar40;
        pIVar51 = (pWVar61->u).btree.pIndex;
        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;
        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);
        pParse->nMem = (int)((int)pEVar38 + iVar58);
        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);
        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);
        if (uVar40 != 0) {
          iVar26 = pLevel->iIdxCur;
          if (pEVar42 == (Expr *)0x0) {
            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);
            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);
            iVar44 = 0x19;
          }
          else {
            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);
            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);
            iVar44 = 0x16;
          }
          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);
          if (pVVar52->db->mallocFailed == '\0') {
            pOVar33 = pVVar52->aOp;
            pOVar33[iVar44].p4type = -3;
            pOVar33[iVar44].p4.pCtx = iEq;
            pLevel->addrSkip = iVar44;
            iVar44 = pVVar52->nOp;
            if (iVar28 < 0) {
              pOVar33 = pVVar52->aOp;
              iVar28 = iVar44 + -1;
            }
            pOVar33 = pOVar33 + iVar28;
          }
          else {
            pLevel->addrSkip = iVar44;
            pOVar33 = (Op *)&dummy_22674;
            iVar44 = pVVar52->nOp;
          }
          pOVar33->p2 = iVar44;
          p2 = (sqlite3_context *)0x0;
          do {
            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);
            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);
            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);
            p2 = psVar47;
          } while (psVar47 != iEq);
        }
        if (iEq < psVar57) {
          local_154 = (int)iEq * 4;
          do {
            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);
            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);
            in_stack_fffffe58 = pEVar42;
            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,
                                             (int)pEVar38);
            pEVar35 = local_168;
            if (pEVar38 != p1_00) {
              if (iVar58 == 1) {
                pEVar35 = p1_00;
                if (local_168 != (Expr *)0x0) {
                  sqlite3ReleaseTempReg(pParse,(int)local_168);
                }
              }
              else {
                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);
              }
            }
            local_168 = pEVar35;
            if ((pWVar54->eOperator & 1) != 0) {
              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))
              goto LAB_0009adb4;
              goto _L37768;
            }
            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;
            pEVar38 = pWVar54->pExpr->pRight;
            if (((pWVar54->wtFlags & 0x800) == 0) &&
               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {
              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,
                                pLevel->addrBrk,(int)in_stack_fffffe58);
            }
            if (pcVar27 == (char *)0x0) goto _L37768;
            aff2 = pcVar27[(int)iEq];
            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);
            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;
            bVar23 = 0;
            uVar22 = pEVar38->op;
            while ((byte)(uVar22 + 0x56) < 2) {
              pEVar38 = pEVar38->pLeft;
              if (uVar22 == 0xaa) {
                bVar23 = 1;
              }
              uVar22 = pEVar38->op;
            }
            if (uVar22 == 0xad) {
              uVar22 = pEVar38->op2;
            }
            switch(uVar22) {
            case 's':
              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));
              break;
            default:
              goto _L37768;
            case 0x96:
            case 0x98:
              bVar15 = 'B' < aff2;
              break;
            case 0x97:
              bVar15 = (bool)(bVar23 ^ 1);
              break;
            case 0xa4:
              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;
              goto _L37768;
            }
            if (bVar15) {
LAB_0009adb4:
              pcVar27[(int)iEq] = 'A';
            }
_L37768:
            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);
            local_154 = local_154 + 4;
          } while (psVar57 != iEq);
        }
        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {
          local_144 = (char *)0x0;
        }
        else {
          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);
        }
        if (local_128 == (Expr *)0x0) {
          iVar58 = pLevel->addrNxt;
        }
        else {
          iVar58 = pLevel->addrBignull;
        }
        if (local_120 == (WhereTerm *)0x0) {
          if (local_12c == (WhereTerm *)0x0) {
            local_148 = 1;
          }
          else {
            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);
          }
          uVar50 = (uint)(uVar4 != 0);
          uVar53 = local_118;
          if (bVar18) {
            uVar50 = 1;
            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);
            local_140 = (Expr *)0x1;
            uVar41 = local_118 + 1;
            local_154 = 0;
          }
          else if (local_128 == (Expr *)0x0) {
            local_140 = (Expr *)0x0;
            local_154 = 1;
            uVar41 = local_118;
          }
          else {
            uVar50 = 1;
            uVar41 = local_118 + 1;
            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);
            local_140 = (Expr *)0x0;
            local_154 = 1;
            uVar53 = uVar41;
          }
        }
        else {
          local_154 = (uint)((local_120->eOperator & 0x28) != 0);
          if (local_12c == (WhereTerm *)0x0) {
            local_148 = 1;
          }
          else {
            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);
          }
          pEVar38 = local_120->pExpr->pRight;
          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);
          if ((local_120->wtFlags & 0x100) != 0) {
            pOVar33 = (Op *)&dummy_22674;
            if (v->db->mallocFailed == '\0') {
              pOVar33 = v->aOp + v->nOp + -1;
            }
            uVar53 = pLevel->iLikeRepCntr;
            pOVar33->p5 = (ushort)uVar53 & 1;
            pOVar33->p3 = uVar53 >> 1;
          }
          iVar26 = sqlite3ExprCanBeNull(pEVar38);
          if (iVar26 != 0) {
            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58
                             );
          }
          if (pcVar27 != (char *)0x0) {
            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);
          }
          uVar22 = pEVar38->op;
          uVar53 = uVar5 + local_118;
          if (uVar22 == 0xad) {
            uVar22 = pEVar38->op2;
          }
          uVar41 = uVar53;
          if (uVar22 == 0xae) {
            iVar26 = ((pEVar38->x).pList)->nExpr;
LAB_0009c725:
            if (1 < iVar26) {
              local_140 = (Expr *)0x0;
              uVar50 = 1;
              local_154 = 1;
              goto LAB_0009be0e;
            }
          }
          else if (uVar22 == 0x88) {
            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;
            goto LAB_0009c725;
          }
          uVar50 = 1;
          disableTerm(pLevel,local_120);
          local_140 = (Expr *)0x0;
        }
LAB_0009be0e:
        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);
        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {
          if ((pWVar63->wsFlags & 0x40000) != 0) {
            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);
          }
          if (local_128 == (Expr *)0x0) {
            in_stack_fffffe58 = local_168;
            sqlite3VdbeAddOp4Int
                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,
                       iVar58,(int)local_168,uVar41);
          }
          else {
            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);
            pEVar38 = local_168;
            sqlite3VdbeAddOp4Int
                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,
                       iVar58,(int)local_168,uVar41);
            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);
            in_stack_fffffe58 = local_168;
            sqlite3VdbeAddOp4Int
                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58
                       ,(int)local_168,uVar41 - local_154);
          }
        }
        if (local_12c == (WhereTerm *)0x0) {
          if (bVar60) {
            if (local_128 == (Expr *)0x0) {
              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);
              local_148 = 0;
            }
            local_118 = local_118 + 1;
          }
        }
        else {
          puVar45 = &local_168->op + local_118;
          uVar53 = (uint)uVar17;
          pEVar38 = local_12c->pExpr->pRight;
          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);
          if ((local_12c->wtFlags & 0x100) != 0) {
            pOVar33 = (Op *)&dummy_22674;
            if (v->db->mallocFailed == '\0') {
              pOVar33 = v->aOp + v->nOp + -1;
            }
            uVar50 = pLevel->iLikeRepCntr;
            pOVar33->p5 = (ushort)uVar50 & 1;
            pOVar33->p3 = uVar50 >> 1;
          }
          iVar26 = sqlite3ExprCanBeNull(pEVar38);
          if (iVar26 != 0) {
            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);
          }
          if (local_144 != (char *)0x0) {
            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);
            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);
          }
          uVar22 = pEVar38->op;
          local_118 = uVar53 + local_118;
          if (uVar22 == 0xad) {
            uVar22 = pEVar38->op2;
          }
          if (uVar22 == 0xae) {
            iVar26 = ((pEVar38->x).pList)->nExpr;
LAB_0009d041:
            if (1 < iVar26) {
              local_148 = 1;
              goto LAB_0009bf64;
            }
          }
          else if (uVar22 == 0x88) {
            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;
            goto LAB_0009d041;
          }
          disableTerm(pLevel,local_12c);
        }
LAB_0009bf64:
        if (pcVar27 != (char *)0x0) {
          sqlite3DbFreeNN(db,pcVar27);
        }
        if (local_144 != (char *)0x0) {
          sqlite3DbFreeNN(db,local_144);
        }
        pLevel->p2 = v->nOp;
        if (local_118 != 0) {
          if (local_128 != (Expr *)0x0) {
            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);
          }
          in_stack_fffffe58 = local_168;
          sqlite3VdbeAddOp4Int
                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,
                     (int)local_168,local_118);
        }
        if (local_128 != (Expr *)0x0) {
          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);
          sqlite3VdbeAddOp4Int
                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,
                     (int)local_168,local_118 + (int)local_140);
          in_stack_fffffe58 = local_168;
        }
        uVar53 = pWVar63->wsFlags;
        if ((uVar53 & 0x40000) != 0) {
          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);
          uVar53 = pWVar63->wsFlags;
        }
        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {
          if ((local_158->pTable->tabFlags & 0x80) == 0) {
            if (((pWInfo->wctrlFlags & 0x400) != 0) ||
               (((pWInfo->wctrlFlags & 0x1000) != 0 &&
                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {
              pEVar38 = (Expr *)(pParse->nMem + 1);
              pParse->nMem = (int)pEVar38;
              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);
              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);
              in_stack_fffffe58 = pEVar38;
              goto LAB_0009ca27;
            }
            pPVar32 = pWInfo->pParse;
            pVVar52 = pPVar32->pVdbe;
            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;
            in_stack_fffffe58 = p1;
            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);
            if ((pWInfo->wctrlFlags & 0x20) == 0) {
              bVar60 = false;
              goto LAB_0009c03e;
            }
            pPVar37 = pPVar32->pToplevel;
            if (pPVar32->pToplevel == (Parse *)0x0) {
              pPVar37 = pPVar32;
            }
            if (pPVar37->writeMask == 0) {
              pTVar10 = local_158->pTable;
              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,
                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));
              if (piVar39 != (int *)0x0) {
                *piVar39 = (int)pTVar10->nCol;
                uVar40 = local_158->nColumn;
                if (1 < uVar40) {
                  piVar14 = local_158->aiColumn;
                  iVar58 = 0;
                  do {
                    sVar24 = piVar14[iVar58];
                    iVar58 = iVar58 + 1;
                    if ((pTVar10->tabFlags & 0x20) == 0) {
                      if (-1 < sVar24) goto LAB_0009d40b;
                    }
                    else if (-1 < sVar24) {
                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);
LAB_0009d40b:
                      piVar39[sVar24 + 1] = iVar58;
                    }
                  } while (uVar40 - 1 != iVar58);
                }
                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);
              }
              goto LAB_0009ca27;
            }
            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;
          }
          else {
            if (p1 != pEVar31) {
              pIVar51 = local_158->pTable->pIndex;
              if (pIVar51 != (Index *)0x0) {
LAB_0009c96b:
                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;
                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);
                if (pIVar51->nKeyCol == 0) {
                  uVar53 = 0;
                }
                else {
                  iVar58 = 0;
                  do {
                    if (local_158->nColumn == 0) {
LAB_0009c9d1:
                      uVar53 = 0xffffffff;
                    }
                    else {
                      uVar53 = 0;
                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {
                        do {
                          uVar53 = uVar53 + 1;
                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;
                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);
                        uVar53 = (uint)(short)uVar53;
                      }
                    }
                    puVar45 = &in_stack_fffffe58->op + iVar58;
                    iVar58 = iVar58 + 1;
                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);
                    uVar53 = (uint)pIVar51->nKeyCol;
                  } while (iVar58 < (int)uVar53);
                }
                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);
                goto LAB_0009ca27;
              }
LAB_0009ca50:
                    /* WARNING: Does not return */
              pcVar16 = (code *)invalidInstructionException();
              (*pcVar16)();
            }
LAB_0009ca27:
            if (pLevel->iLeftJoin == 0) {
              if ((pWInfo->wctrlFlags & 0x20) == 0) {
                bVar60 = false;
                goto LAB_0009c049;
              }
LAB_0009c8ce:
              bVar60 = false;
              goto LAB_0009c1d7;
            }
          }
          bVar60 = false;
        }
        else {
          bVar60 = true;
LAB_0009c03e:
          if (pLevel->iLeftJoin == 0) {
LAB_0009c049:
            pEVar9 = local_158->aColExpr;
            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {
              pTVar10 = local_158->pTable;
              uVar53 = 0;
              do {
                *(undefined4 *)((int)&w.pParse + uVar53) = 0;
                uVar53 = uVar53 + 4;
              } while (uVar53 < 0x18);
              w.u.pNC = (NameContext *)&x_1;
              x_1.db = pWInfo->pParse->db;
              local_17c = (uint)local_158->nColumn;
              x_1.iTabCur = (int)p1;
              x_1.iIdxCur = (int)pEVar31;
              x_1.pWInfo = pWInfo;
              if (local_158->nColumn != 0) {
                iVar58 = 0;
                do {
                  sVar24 = local_158->aiColumn[iVar58];
                  iVar26 = (int)sVar24;
                  if (sVar24 == -2) {
                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;
                    local_a4._0_2_ = 1;
                    local_a0.pNC = (NameContext *)0x0;
                    local_b0.zToken = (char *)sqlite3SelectWalkFail;
                    local_b4 = exprNodeIsConstant;
                    if (x_1.pIdxExpr != (Expr *)0x0) {
                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);
                      if (local_a4._0_2_ == 0) {
                        p_Var20 = whereIndexExprTransNode;
                        iVar26 = x_1.iTabCol;
                        goto LAB_0009c17b;
                      }
                      goto LAB_0009c1b2;
                    }
                  }
                  else if ((-1 < sVar24) &&
                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {
                    pcVar27 = pCVar11[iVar26].zColl;
                    p_Var20 = whereIndexExprTransColumn;
                    if (pcVar27 != (char *)0x0) {
                      iVar28 = 0;
                      do {
                        uVar53 = (uint)(byte)pcVar27[iVar28];
                        if (uVar53 == (byte)"BINARY"[iVar28]) {
                          p_Var20 = whereIndexExprTransColumn;
                          if (uVar53 == 0) break;
                        }
                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;
                        iVar28 = iVar28 + 1;
                      } while( true );
                    }
LAB_0009c17b:
                    x_1.iTabCol = iVar26;
                    w.xExprCallback = p_Var20;
                    x_1.iIdxCol = iVar58;
                    if (pWInfo->pWhere != (Expr *)0x0) {
                      walkExpr(&w,pWInfo->pWhere);
                    }
                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);
                    sqlite3WalkExprList(&w,pWInfo->pResultSet);
LAB_0009c1b2:
                    local_17c = (uint)local_158->nColumn;
                  }
LAB_0009c1bb:
                  iVar58 = iVar58 + 1;
                } while (iVar58 < (int)local_17c);
              }
            }
LAB_0009c1d7:
            if (local_158->pPartIdxWhere != (Expr *)0x0) {
              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);
            }
          }
        }
        uVar53 = pWVar63->wsFlags;
        if ((uVar53 & 0x1000) == 0) {
          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';
        }
        else {
          pLevel->op = 0xad;
        }
        pLevel->p1 = (int)pEVar31;
        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;
        if ((uVar53 & 0xf) == 0) {
          pLevel->p5 = '\x01';
        }
        if (!bVar60) {
          uVar53 = 1;
          goto LAB_0009b200;
        }
      }
      else {
        pWVar54 = *pWVar63->aLTerm;
        pEVar31 = (Expr *)(pParse->nMem + 1);
        pParse->nMem = (int)pEVar31;
        in_stack_fffffe58 =
             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);
        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {
          sqlite3ReleaseTempReg(pParse,(int)pEVar31);
        }
        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);
        pLevel->op = 0xad;
        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0
            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {
          pWVar54->wtFlags = pWVar54->wtFlags | 4;
          local_158 = (Index *)0x0;
          uVar53 = 2;
          goto LAB_0009b200;
        }
      }
    }
    else {
      uVar53 = (uint)pWVar63->nLTerm;
      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);
      local_154 = pLevel->addrBrk;
      pWVar61 = pWVar63;
      if (uVar53 != 0) {
        uVar50 = 0;
        do {
          while( true ) {
            puVar45 = &pEVar31->op2 + uVar50;
            pWVar54 = pWVar63->aLTerm[uVar50];
            if (pWVar54 != (WhereTerm *)0x0) break;
LAB_0009af14:
            uVar50 = uVar50 + 1;
            if (uVar53 == uVar50) goto LAB_0009af4f;
          }
          if ((pWVar54->eOperator & 1) != 0) {
            in_stack_fffffe58 = pEVar42;
            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);
            local_154 = pLevel->addrNxt;
            goto LAB_0009af14;
          }
          uVar50 = uVar50 + 1;
          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);
        } while (uVar53 != uVar50);
      }
LAB_0009af4f:
      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);
      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);
      uVar22 = (pWVar61->u).vtab.needFree;
      pcVar27 = (pWVar61->u).vtab.idxStr;
      in_stack_fffffe58 = pEVar31;
      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);
      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);
      (pWVar61->u).vtab.needFree = '\0';
      pLevel->p1 = (int)p1;
      uVar53 = uVar53 - 1;
      iVar58 = uVar53 * 4;
      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;
      local_184 = (pLevel->u).in.nIn;
      pLevel->p2 = v->nOp;
      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {
        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),
              (pWVar54->eOperator & 1) != 0) {
          local_184 = local_184 + -1;
          if (((int)uVar53 < 0x10) &&
             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;
          pEVar42 = pWVar54->pExpr->pLeft;
          uVar22 = pEVar42->op;
          if (uVar22 == 0xad) {
            uVar22 = pEVar42->op2;
          }
          if (uVar22 != 0xae) {
            if (uVar22 == 0x88) {
              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;
              goto LAB_0009bc51;
            }
LAB_0009b066:
            if (db->mallocFailed == '\0') {
              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;
              if (iVar26 < 0) {
                iVar26 = v->nOp + -1;
              }
              pOVar33 = (Op *)&dummy_22674;
              if (v->db->mallocFailed == '\0') {
                pOVar33 = v->aOp + iVar26;
              }
              in_stack_fffffe58 = (Expr *)pOVar33->p3;
              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,
                                (int)in_stack_fffffe58);
            }
            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);
            if (pEVar42 != (Expr *)0x0) {
              pEVar42->pLeft = pWVar54->pExpr->pLeft;
              rTemp = 0;
              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;
              pEVar38 = pEVar42;
              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);
              pEVar42->pRight = pEVar35;
              if (pEVar35 != (Expr *)0x0) {
                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);
                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);
                in_stack_fffffe58 = pEVar42;
              }
              pEVar38->pLeft = (Expr *)0x0;
              sqlite3ExprDeleteNN(db,pEVar38);
            }
            goto LAB_0009b15d;
          }
          iVar26 = ((pEVar42->x).pList)->nExpr;
LAB_0009bc51:
          if (iVar26 == 1) goto LAB_0009b066;
          uVar53 = uVar53 - 1;
          iVar58 = iVar58 + -4;
          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;
        }
        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))
        {
LAB_0009b18a:
          disableTerm(pLevel,pWVar54);
        }
LAB_0009b15d:
        iVar58 = iVar58 + -4;
      }
    }
LAB_0009b1e0:
    local_158 = (Index *)0x0;
    uVar53 = 2;
  }
  else {
    iVar26 = pSVar7->a[uVar25].regReturn;
    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;
    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);
    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);
    pLevel->p2 = iVar58;
    pLevel->op = '\v';
    local_158 = (Index *)0x0;
    uVar53 = 2;
  }
LAB_0009b200:
  do {
    iVar58 = (pWInfo->sWC).nTerm;
    pWVar54 = (pWInfo->sWC).a;
    if (iVar58 < 1) goto LAB_0009b538;
    local_17c = 0;
    do {
      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {
LAB_0009b2d5:
        local_17c = uVar50;
        pWVar54 = pWVar54 + 1;
        iVar58 = iVar58 + -1;
        if (iVar58 == 0) goto LAB_0009b30a;
      }
      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&
          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {
        pEVar42 = pWVar54->pExpr;
        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))
        goto LAB_0009b2d5;
        if (uVar53 == 1) {
          x_1.iTabCur = pLevel->iTabCur;
          uVar41 = 0;
          do {
            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;
            uVar41 = uVar41 + 4;
          } while (uVar41 < 0x18);
          x_1.pIdxExpr = (Expr *)local_158;
          local_b4 = exprIdxCover;
          local_a0.pNC = (NameContext *)&x_1;
          if (pEVar42 != (Expr *)0x0) {
            walkExpr((Walker *)&rTemp,pEVar42);
            if (local_a4._0_2_ != 0) {
              local_17c = 2;
              uVar50 = local_17c;
              goto LAB_0009b2d5;
            }
          }
          uVar40 = pWVar54->wtFlags;
LAB_0009b594:
          if ((uVar40 & 0x1000) != 0) {
            uVar50 = 3;
            if (local_17c != 0) {
              uVar50 = local_17c;
            }
            goto LAB_0009b2d5;
          }
        }
        else if (uVar53 != 3) goto LAB_0009b594;
        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {
          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);
          in_stack_fffffe58 = pEVar42;
        }
        else {
          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,
                                     0,(int)in_stack_fffffe58);
          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);
          if (iVar26 != 0) {
            if (iVar26 < 0) {
              iVar26 = v->nOp + -1;
            }
            pOVar33 = (Op *)&dummy_22674;
            if (v->db->mallocFailed == '\0') {
              pOVar33 = v->aOp + iVar26;
            }
            pOVar33->p2 = v->nOp;
          }
        }
        pWVar54->wtFlags = pWVar54->wtFlags | 4;
        goto LAB_0009b2d5;
      }
      pWVar54 = pWVar54 + 1;
      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;
      iVar58 = iVar58 + -1;
    } while (iVar58 != 0);
LAB_0009b30a:
    uVar53 = local_17c;
  } while (local_17c != 0);
  iVar58 = (pWInfo->sWC).nTerm;
  pWVar54 = (pWInfo->sWC).a;
  if (0 < iVar58) {
    paVar62 = &pSVar7->a[uVar25 - 1].u1;
    do {
      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&
          ((pWVar54->eOperator & 0x800) != 0)) &&
         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {
        pEVar42 = pWVar54->pExpr;
        scan.opMask = 0x83;
        scan.k = 0;
        scan.zCollName = (char *)0x0;
        scan.pIdxExpr = (Expr *)0x0;
        scan.idxaff = '\0';
        scan.nEquiv = '\x01';
        scan.iEquiv = '\x01';
        scan.pOrigWC = pWC;
        scan.pWC = pWC;
        scan.aiCur[0] = (int)p1;
        if ((pWVar54->u).leftColumn != -2) {
          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;
          pWVar29 = whereScanNext(&scan);
          if (pWVar29 != (WhereTerm *)0x0) {
            pWVar48 = (WhereTerm *)0x0;
            do {
              uVar53 = (uint)pWVar29->prereqRight;
              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);
              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {
                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))
                goto LAB_0009b454;
                if (pWVar48 == (WhereTerm *)0x0) {
                  pWVar48 = pWVar29;
                }
              }
              pWVar29 = whereScanNext(&scan);
            } while (pWVar29 != (WhereTerm *)0x0);
            pWVar29 = pWVar48;
            if (pWVar48 != (WhereTerm *)0x0) {
LAB_0009b454:
              if (((pWVar29->wtFlags & 4) == 0) &&
                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||
                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))
                 ) {
                rTemp._0_1_ = pEVar31->op;
                rTemp._1_1_ = pEVar31->affExpr;
                rTemp._2_1_ = pEVar31->op2;
                rTemp._3_1_ = pEVar31->field_0x3;
                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;
                local_b0 = pEVar31->u;
                local_a8 = pEVar31->pRight;
                local_a4 = pEVar31->x;
                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;
                local_9c = pEVar31->iTable;
                local_98._0_2_ = pEVar31->iColumn;
                local_98._2_2_ = pEVar31->iAgg;
                local_94._0_2_ = pEVar31->iRightJoinTable;
                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;
                local_90 = pEVar31->pAggInfo;
                local_8c.pTab = (pEVar31->y).pTab;
                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;
                local_ac = pEVar42->pLeft;
                in_stack_fffffe58 = (Expr *)&rTemp;
                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);
              }
            }
          }
        }
      }
      pWVar54 = pWVar54 + 1;
      iVar58 = iVar58 + -1;
    } while (iVar58 != 0);
  }
LAB_0009b538:
  if (pLevel->iLeftJoin == 0) {
    notReady = pLevel->notReady;
  }
  else {
    pLevel->addrFirst = v->nOp;
    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);
    uVar25 = *(uint *)((int)&pLevel->notReady + 4);
    iVar58 = (pWInfo->sWC).nTerm;
    pWVar54 = (pWInfo->sWC).a;
    uVar53 = (uint)pLevel->notReady;
    notReady = pLevel->notReady;
    if (0 < iVar58) {
      iVar26 = 0;
      do {
        if (((pWVar54->wtFlags & 6) == 0) &&
           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&
            ((uint)pWVar54->prereqAll & uVar53) == 0)) {
          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);
          pWVar54->wtFlags = pWVar54->wtFlags | 4;
          iVar58 = (pWInfo->sWC).nTerm;
          uVar53 = (uint)pLevel->notReady;
          uVar25 = *(uint *)((int)&pLevel->notReady + 4);
        }
        notReady = CONCAT44(uVar25,uVar53);
        iVar26 = iVar26 + 1;
        pWVar54 = pWVar54 + 1;
      } while (iVar26 < iVar58);
    }
  }
LAB_0009b549:
  if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return notReady;
LAB_0009c960:
  pIVar51 = pIVar51->pNext;
  if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;
  goto LAB_0009c96b;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

undefined8 __regparm3
FUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,
            uint param_7)

{
  int *piVar1;
  int iVar2;
  short *psVar3;
  byte bVar4;
  undefined1 uVar5;
  ushort uVar6;
  ushort uVar7;
  int iVar8;
  int iVar9;
  char *pcVar10;
  int *piVar11;
  code *pcVar12;
  bool bVar13;
  char cVar14;
  char cVar15;
  byte bVar16;
  short sVar17;
  uint uVar18;
  uint uVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  undefined4 *puVar23;
  int *piVar24;
  int iVar25;
  undefined1 *puVar26;
  int iVar27;
  uint *puVar28;
  uint *puVar29;
  int iVar30;
  int *piVar31;
  ushort uVar32;
  uint uVar33;
  int iVar34;
  uint uVar35;
  byte *pbVar36;
  uint uVar37;
  uint uVar38;
  undefined4 *puVar39;
  int iVar40;
  int iVar41;
  int iVar42;
  int iVar43;
  uint *puVar44;
  uint uVar45;
  int iVar46;
  int in_GS_OFFSET;
  bool bVar47;
  bool bVar48;
  uint *local_194;
  int local_184;
  uint local_17c;
  int local_168;
  int local_158;
  uint local_154;
  int local_144;
  int local_140;
  int local_13c;
  int local_134;
  int *local_12c;
  int local_128;
  int *local_120;
  uint local_118;
  code *local_f0 [6];
  int *local_d8;
  int local_d4;
  int local_d0;
  int local_cc;
  int local_c8;
  int local_c4;
  int *local_c0;
  undefined4 local_bc;
  int local_b8;
  code *local_b4;
  code *local_b0;
  undefined4 local_ac;
  int local_a8;
  int local_a4;
  int *local_a0;
  int local_9c;
  int local_98;
  int local_94;
  int local_90;
  int local_8c;
  int local_88;
  int *local_84;
  int *local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined2 local_74;
  undefined1 local_72;
  undefined4 local_70;
  undefined4 local_6c;
  int local_68;
  undefined2 local_3c;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x9a949;
  iVar41 = *param_1;
  iVar42 = param_5[0x12];
  uVar18 = (uint)*(byte *)(param_5 + 0xd);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  piVar1 = param_3 + 0x12;
  iVar8 = param_3[1];
  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);
  uVar35 = param_7;
  uVar45 = param_6;
  if (0 < param_3[0x79]) {
    if (param_3[0x7a] == iVar9) {
      uVar45 = 0xfffffffe;
      uVar35 = 0xffffffff;
    }
    else {
      uVar19 = 0;
      do {
        uVar33 = uVar19 + 1;
        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;
        iVar20 = uVar19 + 0x7b;
        uVar19 = uVar33;
      } while (iVar9 != param_3[iVar20]);
      bVar48 = (uVar33 & 0x20) == 0;
      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));
      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));
    }
    uVar35 = uVar35 & param_7;
    uVar45 = uVar45 & param_6;
  }
LAB_0009a9fc:
  param_5[0x14] = uVar35;
  param_5[0x13] = uVar45;
  uVar35 = param_3[0x11];
  uVar45 = param_3[0x10];
  iVar20 = param_1[0xe] + -1;
  param_1[0xe] = iVar20;
  param_5[4] = iVar20;
  param_5[3] = iVar20;
  iVar40 = param_1[0xe] + -1;
  param_1[0xe] = iVar40;
  param_5[6] = iVar40;
  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {
    iVar34 = param_1[0xb] + 1;
    param_1[0xb] = iVar34;
    *param_5 = iVar34;
    FUN_00049630(iVar34);
  }
  if (param_4 == 0) {
    uVar19 = 0;
  }
  else {
    uVar19 = param_4;
    if (param_3[param_4 * 0x15 + 0xba] == 0) {
      piVar31 = param_3 + param_4 * 0x15 + 0xa5;
      do {
        uVar19 = uVar19 - 1;
        if (uVar19 == 0) break;
        iVar34 = *piVar31;
        piVar31 = piVar31 + -0x15;
      } while (iVar34 == 0);
    }
  }
  iVar34 = uVar18 * 0x44 + iVar8;
  bVar4 = *(byte *)(iVar34 + 0x2d);
  if ((bVar4 & 0x10) == 0) {
    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);
    if ((param_4 & 0x20) != 0) {
      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);
    }
    uVar33 = uVar45 & 1;
    uVar35 = *(uint *)(iVar42 + 0x24);
    if ((uVar35 & 0x400) == 0) {
      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {
        iVar34 = param_3[uVar19 * 0x15 + 0xbd];
        if ((uVar35 & 0x102) == 0x102) {
          if ((uVar35 & 0x20) != 0) {
            piVar24 = *(int **)(iVar42 + 0x30);
            piVar31 = (int *)*piVar24;
            if ((uVar35 & 0x10) != 0) {
              iVar41 = 4;
              goto LAB_0009c28b;
            }
            piVar24 = piVar31;
            if (uVar33 != 0) goto LAB_0009c549;
            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;
            piVar24 = (int *)0x0;
            goto LAB_0009c2a8;
          }
          if ((uVar35 & 0x10) == 0) {
            if (uVar33 != 0) {
              piVar24 = (int *)0x0;
              goto LAB_0009c549;
            }
LAB_0009bc9a:
            FUN_00049630(iVar34);
            iVar41 = param_2[0x1a];
LAB_0009bcbb:
            *(undefined1 *)((int)param_5 + 0x35) = 5;
          }
          else {
            iVar41 = 0;
            piVar31 = (int *)0x0;
            piVar24 = *(int **)(iVar42 + 0x30);
LAB_0009c28b:
            piVar11 = *(int **)((int)piVar24 + iVar41);
            if (uVar33 == 0) {
              piVar24 = piVar11;
              if (piVar31 == (int *)0x0) goto LAB_0009c549;
LAB_0009c2a8:
              local_24 = 0x18161719;
              pcVar10 = *(char **)(*piVar31 + 0x10);
              cVar15 = *pcVar10;
              if (cVar15 == -0x53) {
                cVar15 = pcVar10[2];
              }
              if (cVar15 == -0x52) {
                iVar41 = **(int **)(pcVar10 + 0x14);
LAB_0009cf97:
                if (iVar41 < 2) goto LAB_0009c2d7;
                if (*(char *)((int)param_1 + 0x13) == '\0') {
                  local_194 = (uint *)(param_1[0xb] + 1);
                  param_1[0xb] = (int)local_194;
                }
                else {
                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;
                  *(byte *)((int)param_1 + 0x13) = bVar16;
                  local_194 = (uint *)param_1[bVar16 + 0x26];
                }
                local_b8 = (int)local_194;
                FUN_00095030(1);
              }
              else {
                if (cVar15 == -0x78) {
                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
                  goto LAB_0009cf97;
                }
LAB_0009c2d7:
                local_194 = (uint *)FUN_000958f0();
                FUN_00020250();
              }
              FUN_000493f0(iVar20,local_194);
              if (local_b8 != 0) {
                FUN_000254e0();
              }
            }
            else {
              piVar24 = piVar31;
              piVar31 = piVar11;
              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;
LAB_0009c549:
              FUN_00049630(iVar34);
            }
            if (piVar24 != (int *)0x0) {
              iVar41 = *piVar24;
              param_1[0xb] = param_1[0xb] + 1;
              FUN_00095030(1);
              pcVar10 = *(char **)(iVar41 + 0x10);
              cVar15 = *pcVar10;
              if (cVar15 == -0x53) {
                cVar15 = pcVar10[2];
              }
              if (cVar15 == -0x52) {
                iVar41 = **(int **)(pcVar10 + 0x14);
LAB_0009d05c:
                if (iVar41 < 2) goto LAB_0009c3ac;
              }
              else {
                if (cVar15 == -0x78) {
                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
                  goto LAB_0009d05c;
                }
LAB_0009c3ac:
                FUN_00020250();
              }
              iVar41 = param_2[0x1a];
              if (uVar33 == 0) {
                *(undefined1 *)((int)param_5 + 0x35) = 5;
                param_5[0xf] = iVar41;
                param_5[0xe] = iVar9;
              }
              else {
                *(undefined1 *)((int)param_5 + 0x35) = 4;
                param_5[0xf] = iVar41;
                param_5[0xe] = iVar9;
              }
              iVar41 = param_1[0xb] + 1;
              param_1[0xb] = iVar41;
              FUN_00049630(iVar41);
              FUN_000493f0(iVar20,iVar41);
              if (0 < param_2[0x1a]) {
                local_158 = 0;
                local_194 = (uint *)0x2;
                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;
                goto LAB_0009b1f0;
              }
              goto LAB_0009b1e0;
            }
            iVar41 = param_2[0x1a];
            if (uVar33 == 0) goto LAB_0009bcbb;
            *(undefined1 *)((int)param_5 + 0x35) = 4;
          }
          param_5[0xf] = iVar41;
          local_158 = 0;
          local_194 = (uint *)0x2;
          param_5[0xe] = iVar9;
          goto LAB_0009b1f0;
        }
        if ((uVar35 & 0x200) == 0) {
          if ((uVar35 & 0x2000) == 0) {
            if ((bVar4 & 0x20) == 0) {
              uVar5 = (&DAT_000d8764)[uVar33];
              param_5[0xe] = iVar9;
              *(undefined1 *)((int)param_5 + 0x35) = uVar5;
              iVar41 = FUN_00049630(iVar34);
              *(undefined1 *)((int)param_5 + 0x37) = 1;
              param_5[0xf] = iVar41 + 1;
              goto LAB_0009b1e0;
            }
            *(undefined1 *)((int)param_5 + 0x35) = 0xad;
            local_158 = 0;
            local_194 = (uint *)0x2;
            goto LAB_0009b1f0;
          }
          iVar20 = param_1[10];
          param_1[10] = iVar20 + 1;
          iVar21 = param_1[0xb] + 1;
          iVar22 = param_1[0xe] + -1;
          param_1[0xb] = iVar21;
          param_1[0xe] = iVar22;
          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);
          piVar31 = (int *)**(int **)(iVar42 + 0x30);
          iVar42 = piVar31[7];
          *(undefined1 *)((int)param_5 + 0x35) = 0x41;
          param_5[0xe] = iVar21;
          if (*(byte *)(param_3 + 0xb) < 2) {
            local_194 = (uint *)param_3[1];
          }
          else {
            param_4 = *(byte *)(param_3 + 0xb) - param_4;
            iVar43 = (param_4 - 1) * 0x44;
            uVar35 = iVar43 + 0x4c;
            if (iVar41 == 0) {
              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;
              if (DAT_00106360 == 0) {
                local_194 = (uint *)(*DAT_00106380)(uVar35);
              }
              else {
                local_194 = (uint *)FUN_000280e0();
              }
LAB_0009d302:
              if (local_194 == (uint *)0x0) goto LAB_0009b549;
            }
            else {
              if (*(ushort *)(iVar41 + 0x114) < uVar35) {
                if (*(int *)(iVar41 + 0x110) == 0) {
                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;
                }
                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;
LAB_0009d2f9:
                local_194 = (uint *)FUN_0002eee0();
                goto LAB_0009d302;
              }
              if (uVar35 < 0x81) {
                local_194 = *(uint **)(iVar41 + 0x138);
                if (local_194 == (uint *)0x0) {
                  local_194 = *(uint **)(iVar41 + 0x134);
                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x134) = uVar35;
                }
                else {
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x138) = uVar35;
                }
              }
              else {
LAB_0009d46c:
                local_194 = *(uint **)(iVar41 + 0x130);
                if (local_194 == (uint *)0x0) {
                  local_194 = *(uint **)(iVar41 + 300);
                  if (local_194 == (uint *)0x0) {
                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;
                    goto LAB_0009d2f9;
                  }
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 300) = uVar35;
                }
                else {
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x130) = uVar35;
                }
              }
            }
            local_194[1] = param_4 & 0xff;
            *local_194 = param_4 & 0xff;
            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);
            local_194[2] = *puVar28;
            local_194[0x12] = puVar28[0x10];
            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));
            puVar23 = (undefined4 *)((int)puVar28 - iVar41);
            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);
            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {
              *puVar39 = *puVar23;
              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;
              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;
            }
            iVar41 = param_3[1];
            if (0 < (int)(param_4 - 1)) {
              pbVar36 = (byte *)(param_5 + 0x22);
              puVar28 = local_194 + 0x13;
              do {
                bVar4 = *pbVar36;
                pbVar36 = pbVar36 + 0x54;
                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);
                *puVar28 = *puVar44;
                puVar28[0x10] = puVar44[0x10];
                puVar29 = puVar28 + 0x11;
                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);
                puVar23 = (undefined4 *)((int)puVar44 - iVar43);
                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);
                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {
                  *puVar39 = *puVar23;
                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;
                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;
                }
                puVar28 = puVar29;
              } while (local_194 + param_4 * 0x11 + 2 != puVar29);
            }
          }
          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {
            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {
              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {
                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {
                  param_1[10] = param_1[10] + 1;
                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));
                  FUN_00051750();
                  goto LAB_0009b879;
                }
              }
              param_1[10] = param_1[10] + 1;
              goto LAB_0009ca50;
            }
            iVar41 = param_1[0xb];
            param_1[0xb] = iVar41 + 1;
            FUN_00049630(iVar41 + 1);
LAB_0009b879:
            local_140 = param_1[0xb] + 1;
            param_1[0xb] = local_140;
          }
          else {
            local_140 = 0;
          }
          iVar27 = 0;
          iVar43 = 0;
          iVar21 = FUN_00049630(iVar21);
          iVar41 = param_3[0x15];
          if (iVar41 < 2) {
LAB_0009d0ac:
            local_134 = 0;
          }
          else {
            do {
              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);
              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&
                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {
                if (*piVar24 != 0) {
                  FUN_0005dca0();
                }
                iVar43 = FUN_000559f0();
                iVar41 = param_3[0x15];
              }
              iVar27 = iVar27 + 1;
            } while (iVar27 < iVar41);
            if (iVar43 == 0) goto LAB_0009d0ac;
            local_134 = FUN_000556e0();
          }
          uVar32 = *(ushort *)(param_3 + 10);
          FUN_000496a0(param_1,1,"MULTI-INDEX OR");
          iVar41 = *(int *)(iVar42 + 0xc);
          if (iVar41 < 1) {
            iVar41 = param_1[0x36];
            if (iVar41 != 0) {
              piVar31 = (int *)param_1[2];
              local_13c = 0;
              bVar48 = false;
              goto LAB_0009cb9d;
            }
            param_5[0x10] = 0;
            bVar48 = false;
          }
          else {
            bVar48 = false;
            local_13c = 0;
            iVar43 = 0;
            do {
              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));
              iVar27 = iVar43 + 1;
              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {
                if (local_134 != 0) {
                  *(undefined4 *)(local_134 + 0xc) = *puVar23;
                }
                FUN_000496a0(param_1,1,"INDEX %d",iVar27);
                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);
                if (iVar41 != 0) {
                  piVar31 = (int *)param_1[0x1d];
                  if ((int *)param_1[0x1d] == (int *)0x0) {
                    piVar31 = param_1;
                  }
                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {
                    FUN_0005ac00(0);
                  }
                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {
                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {
                      iVar43 = -1;
                    }
                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {
                      FUN_00095620(0xffffffff,local_140);
                      iVar25 = FUN_000493f0(0,local_140);
                      if (*(char *)(*param_2 + 0x4d) == '\0') {
                        iVar2 = param_2[0x19] + iVar25 * 0x14;
                        *(undefined1 *)(iVar2 + 1) = 0xfd;
                        *(int *)(iVar2 + 0x10) = iVar43;
                      }
                    }
                    else {
                      iVar2 = *(int *)(iVar34 + 8);
                      while( true ) {
                        if (iVar2 == 0) goto LAB_0009ca50;
                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;
                        iVar2 = *(int *)(iVar2 + 0x14);
                      }
                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);
                      iVar30 = FUN_00025510();
                      if (uVar35 != 0) {
                        iVar46 = 0;
                        iVar25 = iVar30;
                        do {
                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);
                          iVar46 = iVar46 + 2;
                          FUN_00095620((int)*psVar3,iVar25);
                          iVar25 = iVar25 + 1;
                        } while (uVar35 * 2 != iVar46);
                      }
                      if (iVar43 == 0) {
                        FUN_000493f0(uVar35,local_140);
                        iVar25 = 0;
                        FUN_00068470(local_140,iVar30,uVar35);
                      }
                      else {
                        iVar25 = FUN_000493f0(0,iVar30);
                        iVar2 = *param_2;
                        if (*(char *)(iVar2 + 0x4d) == '\0') {
                          iVar2 = param_2[0x19] + iVar25 * 0x14;
                          *(undefined1 *)(iVar2 + 1) = 0xfd;
                          *(uint *)(iVar2 + 0x10) = uVar35;
                        }
                        if (-1 < iVar43) {
                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);
                          FUN_00068470(local_140,iVar30,uVar35);
                          if (0 < param_2[0x1a]) {
                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;
                          }
                        }
                      }
                      if (uVar35 == 1) {
                        FUN_00029ad0();
                      }
                      else if (param_1[7] < (int)uVar35) {
                        param_1[7] = uVar35;
                        param_1[8] = iVar30;
                      }
                    }
                    FUN_00049630(iVar22);
                    if (iVar25 != 0) {
                      if (iVar25 < 0) {
                        iVar25 = param_2[0x1a] + -1;
                      }
                      puVar26 = &DAT_001075d0;
                      if (*(char *)(*param_2 + 0x4d) == '\0') {
                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);
                      }
                      *(int *)(puVar26 + 8) = param_2[0x1a];
                    }
                  }
                  else {
                    FUN_00049630(iVar22);
                  }
                  bVar13 = true;
                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {
                    bVar13 = bVar48;
                  }
                  bVar48 = bVar13;
                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||
                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&
                      (local_13c != iVar41)))) {
                    local_13c = 0;
                  }
                  else {
                    local_13c = iVar41;
                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&
                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {
                      local_13c = iVar41;
                    }
                  }
                  FUN_00069230();
                  iVar41 = param_1[0x36];
                  if (iVar41 != 0) {
                    piVar31 = (int *)param_1[2];
                    if (iVar41 < 0) {
                      iVar41 = piVar31[0x1a] + -1;
                    }
                    puVar26 = &DAT_001075d0;
                    if (*(char *)(*piVar31 + 0x4d) == '\0') {
                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);
                    }
                    iVar41 = *(int *)(puVar26 + 8);
                  }
                  param_1[0x36] = iVar41;
                }
                iVar41 = *(int *)(iVar42 + 0xc);
              }
              iVar43 = iVar27;
            } while (iVar27 < iVar41);
            iVar41 = param_1[0x36];
            if (iVar41 != 0) {
              piVar31 = (int *)param_1[2];
LAB_0009cb9d:
              if (iVar41 < 0) {
                iVar41 = piVar31[0x1a] + -1;
              }
              puVar26 = &DAT_001075d0;
              if (*(char *)(*piVar31 + 0x4d) == '\0') {
                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);
              }
              iVar41 = *(int *)(puVar26 + 8);
            }
            param_1[0x36] = iVar41;
            param_5[0x10] = local_13c;
            if (local_13c != 0) {
              param_5[2] = iVar20;
            }
          }
          if (local_134 != 0) {
            *(undefined4 *)(local_134 + 0xc) = 0;
            FUN_00053f30();
          }
          iVar41 = param_2[0x1a] + -1;
          if (-1 < iVar21) {
            iVar41 = iVar21;
          }
          puVar26 = &DAT_001075d0;
          if (*(char *)(*param_2 + 0x4d) == '\0') {
            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);
          }
          *(int *)(puVar26 + 4) = param_2[0x1a];
          FUN_00049630(param_5[3]);
          FUN_000330b0();
          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {
            FUN_00023410();
          }
          if (!bVar48) {
            FUN_00020250();
            local_158 = 0;
            local_194 = (uint *)0x2;
            goto LAB_0009b1f0;
          }
          goto LAB_0009b1e0;
        }
        uVar32 = *(ushort *)(iVar42 + 0x1c);
        uVar6 = *(ushort *)(iVar42 + 0x18);
        local_118 = (uint)uVar6;
        uVar7 = *(ushort *)(iVar42 + 0x1a);
        local_158 = *(int *)(iVar42 + 0x20);
        iVar41 = param_5[2];
        if ((uVar35 & 0x20) == 0) {
          uVar37 = 0;
          local_120 = (int *)0x0;
          uVar19 = local_118;
        }
        else {
          uVar37 = (uint)uVar7;
          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);
          uVar19 = local_118 + 1;
        }
        iVar20 = param_1[0xb];
        local_168 = iVar20 + 1;
        if ((uVar35 & 0x10) == 0) {
          bVar48 = false;
          local_12c = (int *)0x0;
        }
        else {
          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);
          if (uVar37 < uVar32) {
            uVar37 = (uint)uVar32;
          }
          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {
            param_1[0xb] = local_168;
            param_5[0xb] = local_168;
            FUN_00049630(local_168);
            param_5[0xc] = param_2[0x1a];
            iVar20 = param_5[0xb];
            param_5[0xb] = iVar20 * 2;
            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |
                           iVar20 * 2;
            uVar35 = *(uint *)(iVar42 + 0x24);
            iVar20 = param_1[0xb];
            local_168 = iVar20 + 1;
          }
          bVar48 = false;
          if (local_120 == (int *)0x0) {
            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);
            if (iVar34 < 0) {
              bVar48 = iVar34 == -2;
            }
            else {
              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==
                       '\0';
            }
          }
        }
        local_128 = 0;
        if ((uVar35 & 0x80030) == 0x80000) {
          iVar34 = *param_5;
          param_1[0xb] = local_168;
          param_5[9] = local_168;
          iVar20 = local_168;
          if (iVar34 != 0) {
            FUN_00049630(local_168);
            iVar20 = param_1[0xb];
          }
          iVar34 = param_1[0xe];
          bVar48 = true;
          uVar37 = 1;
          param_1[0xe] = iVar34 + -1;
          local_128 = local_168;
          param_5[10] = iVar34 + -1;
          local_168 = iVar20 + 1;
        }
        if (uVar6 < *(ushort *)(local_158 + 0x32)) {
          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)
          goto LAB_0009c48d;
LAB_0009ac34:
          uVar6 = uVar32;
          bVar48 = false;
          bVar13 = bVar48;
        }
        else {
          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;
LAB_0009c48d:
          piVar31 = local_12c;
          bVar13 = false;
          local_12c = local_120;
          uVar6 = uVar7 & 0xff;
          local_120 = piVar31;
          uVar7 = uVar32;
        }
        piVar31 = (int *)param_1[2];
        iVar34 = param_5[0x12];
        uVar32 = *(ushort *)(iVar34 + 0x2a);
        uVar35 = (uint)uVar32;
        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);
        param_1[0xb] = iVar20 + uVar37 + uVar45;
        FUN_0002e410();
        iVar20 = FUN_000300b0();
        if (uVar32 != 0) {
          if (uVar33 == 0) {
            FUN_00049630(0);
            iVar21 = FUN_00049630(0);
          }
          else {
            FUN_00049630(0);
            iVar21 = FUN_00049630(0);
          }
          iVar22 = FUN_000493f0(0,local_168);
          if (*(char *)(*piVar31 + 0x4d) == '\0') {
            iVar27 = piVar31[0x19];
            iVar43 = iVar27 + iVar22 * 0x14;
            *(undefined1 *)(iVar43 + 1) = 0xfd;
            *(uint *)(iVar43 + 0x10) = uVar35;
            param_5[5] = iVar22;
            iVar22 = piVar31[0x1a];
            if (iVar21 < 0) {
              iVar27 = piVar31[0x19];
              iVar21 = iVar22 + -1;
            }
            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);
          }
          else {
            param_5[5] = iVar22;
            puVar26 = &DAT_001075d0;
            iVar22 = piVar31[0x1a];
          }
          *(int *)(puVar26 + 8) = iVar22;
          uVar19 = 0;
          do {
            uVar38 = uVar19 + 1;
            FUN_000493f0(uVar19,local_168 + uVar19);
            uVar19 = uVar38;
          } while (uVar38 != uVar35);
        }
        if (uVar35 < uVar45) {
          local_154 = uVar35 * 4;
          do {
            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);
            iVar21 = local_168 + uVar35;
            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);
            if (iVar21 != iVar22) {
              if (uVar37 + uVar45 == 1) {
                bVar47 = local_168 != 0;
                local_168 = iVar22;
                if (bVar47) {
                  FUN_000254e0();
                }
              }
              else {
                FUN_00049630(iVar21);
              }
            }
            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {
              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;
              goto LAB_0009adbc;
            }
            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;
            pcVar10 = *(char **)(*piVar31 + 0x10);
            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)
               ) {
              FUN_00049630(param_5[3]);
            }
            if (iVar20 == 0) goto LAB_0009adbc;
            cVar15 = *(char *)(iVar20 + uVar35);
            cVar14 = FUN_0002e3d0();
            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;
            bVar16 = 0;
            cVar14 = *pcVar10;
            while ((byte)(cVar14 + 0x56U) < 2) {
              pcVar10 = *(char **)(pcVar10 + 0xc);
              if (cVar14 == -0x56) {
                bVar16 = 1;
              }
              cVar14 = *pcVar10;
            }
            if (cVar14 == -0x53) {
              cVar14 = pcVar10[2];
            }
            switch(cVar14) {
            case 's':
              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));
              break;
            default:
              goto LAB_0009adbc;
            case -0x6a:
            case -0x68:
              bVar47 = 'B' < cVar15;
              break;
            case -0x69:
              bVar47 = (bool)(bVar16 ^ 1);
              break;
            case -0x5c:
              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;
              goto LAB_0009adbc;
            }
            if (bVar47) {
LAB_0009adb4:
              *(undefined1 *)(iVar20 + uVar35) = 0x41;
            }
LAB_0009adbc:
            uVar35 = uVar35 + 1;
            local_154 = local_154 + 4;
          } while (uVar45 != uVar35);
        }
        if ((uVar6 == 0) || (iVar20 == 0)) {
          local_144 = 0;
        }
        else {
          local_144 = FUN_000300b0();
        }
        if (local_128 == 0) {
          iVar34 = param_5[4];
        }
        else {
          iVar34 = param_5[10];
        }
        if (local_120 == (int *)0x0) {
          if (bVar13) {
            FUN_00049630(local_168 + local_118);
            local_140 = 1;
            uVar35 = local_118 + 1;
            local_154 = 0;
          }
          else if (local_128 == 0) {
            local_140 = 0;
            local_154 = 1;
            uVar35 = local_118;
          }
          else {
            uVar35 = local_118 + 1;
            FUN_00049630(local_168 + local_118);
            local_140 = 0;
            local_154 = 1;
          }
        }
        else {
          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);
          pcVar10 = *(char **)(*local_120 + 0x10);
          FUN_00095030((uint)uVar7);
          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);
            }
            uVar35 = param_5[0xb];
            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;
            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;
          }
          iVar21 = FUN_0001fe30();
          if (iVar21 != 0) {
            FUN_00049630(iVar34);
          }
          if (iVar20 != 0) {
            FUN_0002e510();
          }
          cVar15 = *pcVar10;
          uVar35 = uVar7 + local_118;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 == -0x52) {
            iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009c725:
            if (1 < iVar21) {
              local_140 = 0;
              local_154 = 1;
              goto LAB_0009be0e;
            }
          }
          else if (cVar15 == -0x78) {
            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
            goto LAB_0009c725;
          }
          FUN_00020250();
          local_140 = 0;
        }
LAB_0009be0e:
        FUN_00049800(iVar20);
        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {
          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {
            FUN_00049630(0);
          }
          if (local_128 == 0) {
            FUN_00068470(iVar34,local_168,uVar35);
          }
          else {
            FUN_00049630(local_128);
            FUN_00068470(iVar34,local_168,uVar35);
            FUN_00049630(param_2[0x1a] + 2);
            FUN_00068470(iVar34,local_168,uVar35 - local_154);
          }
        }
        if (local_12c == (int *)0x0) {
          if (bVar48) {
            if (local_128 == 0) {
              FUN_00049630(local_118 + local_168);
            }
            local_118 = local_118 + 1;
          }
        }
        else {
          pcVar10 = *(char **)(*local_12c + 0x10);
          FUN_00095030((uint)uVar6);
          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);
            }
            uVar35 = param_5[0xb];
            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;
            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;
          }
          iVar21 = FUN_0001fe30();
          if (iVar21 != 0) {
            FUN_00049630(iVar34);
          }
          if (local_144 != 0) {
            FUN_0002e510();
            FUN_00049800(local_144);
          }
          cVar15 = *pcVar10;
          local_118 = uVar6 + local_118;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 == -0x52) {
            iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009d041:
            if (1 < iVar21) goto LAB_0009bf64;
          }
          else if (cVar15 == -0x78) {
            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
            goto LAB_0009d041;
          }
          FUN_00020250();
        }
LAB_0009bf64:
        if (iVar20 != 0) {
          FUN_00023410();
        }
        if (local_144 != 0) {
          FUN_00023410();
        }
        param_5[0xf] = param_2[0x1a];
        if (local_118 != 0) {
          if (local_128 != 0) {
            FUN_00049630(param_2[0x1a] + 3);
          }
          FUN_00068470(iVar34,local_168,local_118);
        }
        if (local_128 != 0) {
          FUN_00049630(param_2[0x1a] + 2);
          FUN_00068470(iVar34,local_168,local_118 + local_140);
        }
        uVar35 = *(uint *)(iVar42 + 0x24);
        if ((uVar35 & 0x40000) != 0) {
          FUN_00049630(1);
          uVar35 = *(uint *)(iVar42 + 0x24);
        }
        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {
          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {
            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||
               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&
                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))
            {
              iVar20 = param_1[0xb] + 1;
              param_1[0xb] = iVar20;
              FUN_00049630(iVar20);
              FUN_000493f0(0,iVar20);
              goto LAB_0009ca27;
            }
            iVar20 = *param_3;
            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;
            FUN_000493f0(0,iVar9);
            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {
              bVar48 = false;
              goto LAB_0009c03e;
            }
            iVar34 = *(int *)(iVar20 + 0x74);
            if (iVar34 == 0) {
              iVar34 = iVar20;
            }
            if (*(int *)(iVar34 + 0x50) == 0) {
              iVar20 = *(int *)(local_158 + 0xc);
              piVar31 = (int *)FUN_0004e890();
              if (piVar31 != (int *)0x0) {
                *piVar31 = (int)*(short *)(iVar20 + 0x2a);
                uVar32 = *(ushort *)(local_158 + 0x34);
                if (1 < uVar32) {
                  iVar34 = *(int *)(local_158 + 4);
                  iVar21 = 0;
                  do {
                    sVar17 = *(short *)(iVar34 + iVar21 * 2);
                    iVar21 = iVar21 + 1;
                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {
                      if (-1 < sVar17) goto LAB_0009d40b;
                    }
                    else if (-1 < sVar17) {
                      sVar17 = FUN_00025700();
LAB_0009d40b:
                      piVar31[sVar17 + 1] = iVar21;
                    }
                  } while (uVar32 - 1 != iVar21);
                }
                FUN_000436c0(0xfffffff1);
              }
              goto LAB_0009ca27;
            }
            if (*param_5 == 0) goto LAB_0009c8ce;
          }
          else {
            if (iVar9 != iVar41) {
              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);
              if (iVar20 != 0) {
LAB_0009c96b:
                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;
                iVar34 = FUN_00025510();
                if (*(short *)(iVar20 + 0x32) == 0) {
                  uVar35 = 0;
                }
                else {
                  iVar21 = 0;
                  do {
                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);
                    if (*(ushort *)(local_158 + 0x34) == 0) {
LAB_0009c9d1:
                      uVar35 = 0xffffffff;
                    }
                    else {
                      uVar35 = 0;
                      if (sVar17 != **(short **)(local_158 + 4)) {
                        do {
                          uVar35 = uVar35 + 1;
                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;
                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);
                        uVar35 = (uint)(short)uVar35;
                      }
                    }
                    iVar22 = iVar34 + iVar21;
                    iVar21 = iVar21 + 1;
                    FUN_000493f0(uVar35,iVar22);
                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);
                  } while (iVar21 < (int)uVar35);
                }
                FUN_00068470(iVar40,iVar34,uVar35);
                goto LAB_0009ca27;
              }
LAB_0009ca50:
                    /* WARNING: Does not return */
              pcVar12 = (code *)invalidInstructionException();
              (*pcVar12)();
            }
LAB_0009ca27:
            if (*param_5 == 0) {
              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {
                bVar48 = false;
                goto LAB_0009c049;
              }
LAB_0009c8ce:
              bVar48 = false;
              goto LAB_0009c1d7;
            }
          }
          bVar48 = false;
        }
        else {
          bVar48 = true;
LAB_0009c03e:
          if (*param_5 == 0) {
LAB_0009c049:
            iVar20 = *(int *)(local_158 + 0x28);
            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {
              iVar34 = *(int *)(local_158 + 0xc);
              uVar35 = 0;
              do {
                *(undefined4 *)((int)local_f0 + uVar35) = 0;
                uVar35 = uVar35 + 4;
              } while (uVar35 < 0x18);
              local_d8 = &local_d4;
              local_bc = *(undefined4 *)*param_3;
              local_17c = (uint)*(ushort *)(local_158 + 0x34);
              local_d0 = iVar9;
              local_cc = iVar41;
              local_c0 = param_3;
              if (*(ushort *)(local_158 + 0x34) != 0) {
                iVar21 = 0;
                do {
                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);
                  iVar22 = (int)sVar17;
                  if (sVar17 == -2) {
                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);
                    local_a4 = CONCAT22(local_a4._2_2_,1);
                    local_a0 = (int *)0x0;
                    local_b0 = FUN_0001fe20;
                    local_b4 = FUN_0002a790;
                    if (local_d4 != 0) {
                      FUN_0004c8d0();
                      if ((short)local_a4 == 0) {
                        pcVar12 = FUN_00061900;
                        iVar22 = local_c4;
                        goto LAB_0009c17b;
                      }
                      goto LAB_0009c1b2;
                    }
                  }
                  else if ((-1 < sVar17) &&
                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,
                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {
                    iVar43 = *(int *)(iVar43 + 8);
                    pcVar12 = FUN_00032b10;
                    if (iVar43 != 0) {
                      iVar27 = 0;
                      do {
                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);
                        if (uVar35 == (byte)"BINARY"[iVar27]) {
                          if (uVar35 == 0) break;
                        }
                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])
                        goto LAB_0009c1bb;
                        iVar27 = iVar27 + 1;
                      } while( true );
                    }
LAB_0009c17b:
                    local_c4 = iVar22;
                    local_f0[1] = pcVar12;
                    local_c8 = iVar21;
                    if (param_3[4] != 0) {
                      FUN_0004c8d0();
                    }
                    FUN_0004c9a0();
                    FUN_0004c9a0();
LAB_0009c1b2:
                    local_17c = (uint)*(ushort *)(local_158 + 0x34);
                  }
LAB_0009c1bb:
                  iVar21 = iVar21 + 1;
                } while (iVar21 < (int)local_17c);
              }
            }
LAB_0009c1d7:
            if (*(int *)(local_158 + 0x24) != 0) {
              FUN_00062f10();
            }
          }
        }
        uVar35 = *(uint *)(iVar42 + 0x24);
        if ((uVar35 & 0x1000) == 0) {
          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';
        }
        else {
          *(undefined1 *)((int)param_5 + 0x35) = 0xad;
        }
        param_5[0xe] = iVar41;
        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;
        if ((uVar35 & 0xf) == 0) {
          *(undefined1 *)((int)param_5 + 0x37) = 1;
        }
        if (!bVar48) {
          local_194 = (uint *)0x1;
          goto LAB_0009b1f0;
        }
      }
      else {
        iVar41 = **(int **)(iVar42 + 0x30);
        iVar20 = param_1[0xb] + 1;
        param_1[0xb] = iVar20;
        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);
        if ((iVar20 != iVar42) && (iVar20 != 0)) {
          FUN_000254e0();
        }
        FUN_000493f0(param_5[4],iVar42);
        *(undefined1 *)((int)param_5 + 0x35) = 0xad;
        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&
            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {
          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;
          local_158 = 0;
          local_194 = (uint *)0x2;
          goto LAB_0009b1f0;
        }
      }
    }
    else {
      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);
      iVar20 = FUN_00025510();
      local_154 = param_5[3];
      if (uVar35 != 0) {
        uVar45 = 0;
        do {
          while( true ) {
            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);
            if (iVar34 != 0) break;
LAB_0009af14:
            uVar45 = uVar45 + 1;
            if (uVar35 == uVar45) goto LAB_0009af4f;
          }
          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {
            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);
            local_154 = param_5[4];
            goto LAB_0009af14;
          }
          uVar45 = uVar45 + 1;
          FUN_00095030(1);
        } while (uVar35 != uVar45);
      }
LAB_0009af4f:
      FUN_00049630(iVar20);
      FUN_00049630(iVar20 + 1);
      cVar15 = *(char *)(iVar42 + 0x1c);
      FUN_000493f0(local_154,iVar20);
      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);
      *(undefined1 *)(iVar42 + 0x1c) = 0;
      param_5[0xe] = iVar9;
      uVar35 = uVar35 - 1;
      iVar34 = uVar35 * 4;
      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;
      local_184 = param_5[0x10];
      param_5[0xf] = param_2[0x1a];
      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {
        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),
              (*(byte *)(piVar31 + 3) & 1) != 0) {
          local_184 = local_184 + -1;
          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))
          goto LAB_0009b18a;
          pcVar10 = *(char **)(*piVar31 + 0xc);
          cVar15 = *pcVar10;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 != -0x52) {
            if (cVar15 == -0x78) {
              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
              goto LAB_0009bc51;
            }
LAB_0009b066:
            if (*(char *)(iVar41 + 0x4d) == '\0') {
              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);
              if (iVar21 < 0) {
                iVar21 = param_2[0x1a] + -1;
              }
              puVar26 = &DAT_001075d0;
              if (*(char *)(*param_2 + 0x4d) == '\0') {
                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);
              }
              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));
            }
            iVar21 = FUN_000556e0();
            if (iVar21 != 0) {
              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);
              local_b8 = 0;
              local_b4 = (code *)0x0;
              iVar22 = FUN_0002fd80();
              *(int *)(iVar21 + 0x10) = iVar22;
              if (iVar22 != 0) {
                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;
                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);
              }
              *(undefined4 *)(iVar21 + 0xc) = 0;
              FUN_00053f30();
            }
            goto LAB_0009b15d;
          }
          iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009bc51:
          if (iVar21 == 1) goto LAB_0009b066;
          uVar35 = uVar35 - 1;
          iVar34 = iVar34 + -4;
          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;
        }
        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {
LAB_0009b18a:
          FUN_00020250();
        }
LAB_0009b15d:
        iVar34 = iVar34 + -4;
      }
    }
LAB_0009b1e0:
    local_158 = 0;
    local_194 = (uint *)0x2;
  }
  else {
    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));
    iVar41 = FUN_00049630(iVar20);
    param_5[0xf] = iVar41;
    *(undefined1 *)((int)param_5 + 0x35) = 0xb;
    local_158 = 0;
    local_194 = (uint *)0x2;
  }
LAB_0009b1f0:
  do {
    iVar41 = param_3[0x15];
    piVar31 = (int *)param_3[0x17];
    if (iVar41 < 1) goto LAB_0009b538;
    local_17c = 0;
    do {
      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {
LAB_0009b2d5:
        local_17c = uVar35;
        piVar31 = piVar31 + 0xc;
        iVar41 = iVar41 + -1;
        if (iVar41 == 0) goto LAB_0009b30a;
      }
      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {
        iVar42 = *piVar31;
        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&
           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;
        if (local_194 == (uint *)0x1) {
          local_d0 = param_5[1];
          uVar45 = 0;
          do {
            *(undefined4 *)((int)&local_b8 + uVar45) = 0;
            uVar45 = uVar45 + 4;
          } while (uVar45 < 0x18);
          local_d4 = local_158;
          local_b4 = FUN_00025680;
          local_a0 = &local_d4;
          if (iVar42 != 0) {
            FUN_0004c8d0();
            if ((short)local_a4 != 0) {
              local_17c = 2;
              uVar35 = local_17c;
              goto LAB_0009b2d5;
            }
          }
          uVar32 = *(ushort *)((int)piVar31 + 10);
LAB_0009b594:
          if ((uVar32 & 0x1000) != 0) {
            uVar35 = 3;
            if (local_17c != 0) {
              uVar35 = local_17c;
            }
            goto LAB_0009b2d5;
          }
        }
        else if (local_194 != (uint *)0x3) goto LAB_0009b594;
        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {
          FUN_00092bc0(param_1,iVar42,iVar40,0x10);
        }
        else {
          iVar20 = FUN_00049630(0);
          FUN_00092bc0(param_1,iVar42,iVar40,0x10);
          if (iVar20 != 0) {
            if (iVar20 < 0) {
              iVar20 = param_2[0x1a] + -1;
            }
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);
            }
            *(int *)(puVar26 + 8) = param_2[0x1a];
          }
        }
        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;
        goto LAB_0009b2d5;
      }
      piVar31 = piVar31 + 0xc;
      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;
      iVar41 = iVar41 + -1;
    } while (iVar41 != 0);
LAB_0009b30a:
    local_194 = (uint *)local_17c;
  } while (local_17c != 0);
  iVar41 = param_3[0x15];
  piVar31 = (int *)param_3[0x17];
  if (0 < iVar41) {
    do {
      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))
          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&
         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {
        iVar42 = *piVar31;
        local_70 = 0x83;
        local_6c = 0;
        local_7c = 0;
        local_78 = 0;
        local_74 = 0x100;
        local_72 = 1;
        local_84 = piVar1;
        local_80 = piVar1;
        local_68 = iVar9;
        if (piVar31[7] != -2) {
          local_3c = (undefined2)piVar31[7];
          puVar23 = (undefined4 *)FUN_00061a10();
          if (puVar23 != (undefined4 *)0x0) {
            puVar39 = (undefined4 *)0x0;
            do {
              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {
                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))
                goto LAB_0009b454;
                if (puVar39 == (undefined4 *)0x0) {
                  puVar39 = puVar23;
                }
              }
              puVar23 = (undefined4 *)FUN_00061a10();
            } while (puVar23 != (undefined4 *)0x0);
            puVar23 = puVar39;
            if (puVar39 != (undefined4 *)0x0) {
LAB_0009b454:
              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&
                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||
                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))
                 )) {
                local_b8 = *piVar24;
                local_b4 = (code *)piVar24[1];
                local_b0 = (code *)piVar24[2];
                local_a8 = piVar24[4];
                local_a4 = piVar24[5];
                local_a0 = (int *)piVar24[6];
                local_9c = piVar24[7];
                local_98 = piVar24[8];
                local_94 = piVar24[9];
                local_90 = piVar24[10];
                local_8c = piVar24[0xb];
                local_88 = piVar24[0xc];
                local_ac = *(undefined4 *)(iVar42 + 0xc);
                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);
              }
            }
          }
        }
      }
      piVar31 = piVar31 + 0xc;
      iVar41 = iVar41 + -1;
    } while (iVar41 != 0);
  }
LAB_0009b538:
  if (*param_5 == 0) {
    param_6 = param_5[0x13];
    param_7 = param_5[0x14];
  }
  else {
    param_5[7] = param_2[0x1a];
    FUN_00049630(*param_5);
    param_7 = param_5[0x14];
    iVar41 = param_3[0x15];
    puVar23 = (undefined4 *)param_3[0x17];
    param_6 = param_5[0x13];
    if (0 < iVar41) {
      iVar42 = 0;
      do {
        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&
           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {
          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);
          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;
          iVar41 = param_3[0x15];
          param_6 = param_5[0x13];
          param_7 = param_5[0x14];
        }
        iVar42 = iVar42 + 1;
        puVar23 = puVar23 + 0xc;
      } while (iVar42 < iVar41);
    }
  }
LAB_0009b549:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000d1450();
  }
  return CONCAT44(param_7,param_6);
LAB_0009c960:
  iVar20 = *(int *)(iVar20 + 0x14);
  if (iVar20 == 0) goto LAB_0009ca50;
  goto LAB_0009c96b;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000d0aab
ADD ESI,0x6b6b7
SUB ESP,0x18c
MOV EBP,dword ptr [ESP + 0x1a4]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EAX]
MOV EDI,dword ptr [ESP + 0x1a8]
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EBP + 0x48]
MOV dword ptr [ESP + 0x2c],EDI
MOV EDI,dword ptr [ESP + 0x1ac]
MOV dword ptr [ESP + 0x8],EAX
MOVZX EAX,byte ptr [EBP + 0x34]
MOV dword ptr [ESP + 0x30],EDI
MOV EDI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x17c],EDI
XOR EDI,EDI
LEA EDI,[ECX + 0x48]
MOV dword ptr [ESP + 0x40],EAX
MOV dword ptr [ESP + 0x50],EDI
MOV EDI,dword ptr [ECX + 0x4]
IMUL EAX,EAX,0x44
MOV dword ptr [ESP + 0x3c],EDI
MOV EDI,dword ptr [EDI + EAX*0x1 + 0x30]
MOV EAX,dword ptr [ECX + 0x1e4]
TEST EAX,EAX
MOV dword ptr [ESP + 0x38],EDI
JLE 0x0009a9f4
CMP dword ptr [ECX + 0x1e8],EDI
MOV EBX,ECX
JZ 0x0009c265
XOR ECX,ECX
MOV EDX,EDI
JMP 0x0009a9ed
CMP EDX,dword ptr [EBX + ECX*0x4 + 0x1e8]
JZ 0x0009b638
ADD ECX,0x1
CMP EAX,ECX
JNZ 0x0009a9e0
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [EBP + 0x50],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EBP + 0x4c],EDX
MOV EDX,dword ptr [EAX + 0x44]
MOV EAX,dword ptr [EAX + 0x40]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x1c],EDX
MOV ESI,dword ptr [EAX + 0x38]
LEA EBX,[ESI + -0x1]
MOV dword ptr [EAX + 0x38],EBX
MOV dword ptr [EBP + 0x10],EBX
MOV dword ptr [EBP + 0xc],EBX
MOV ESI,dword ptr [EAX + 0x38]
SUB ESI,0x1
MOV dword ptr [EAX + 0x38],ESI
CMP byte ptr [EBP + 0x34],0x0
MOV dword ptr [ESP + 0x24],ESI
MOV dword ptr [EBP + 0x18],ESI
JZ 0x0009aa51
IMUL EAX,dword ptr [ESP + 0x40],0x44
MOV ESI,dword ptr [ESP + 0x3c]
TEST byte ptr [ESI + EAX*0x1 + 0x2c],0x8
JNZ 0x0009b749
MOV EAX,dword ptr [ESP + 0x1a0]
TEST EAX,EAX
JZ 0x0009c252
IMUL EAX,dword ptr [ESP + 0x1a0],0x54
MOV ESI,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESI + EAX*0x1 + 0x2e8]
TEST EDI,EDI
JNZ 0x0009c259
LEA EDX,[ESI + EAX*0x1 + 0x294]
MOV EDI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x1a0]
MOV ESI,dword ptr [ESP + 0x18]
JMP 0x0009aaa2
SUB EDX,0x54
MOV ECX,dword ptr [EDX + 0x54]
TEST ECX,ECX
JNZ 0x0009aaa7
SUB EAX,0x1
JNZ 0x0009aa98
MOV dword ptr [ESP + 0x18],ESI
MOV dword ptr [ESP + 0x1c],EDI
IMUL ECX,dword ptr [ESP + 0x40],0x44
ADD ECX,dword ptr [ESP + 0x3c]
MOVZX EDX,byte ptr [ECX + 0x2d]
TEST DL,0x10
JNZ 0x0009b660
MOVZX ECX,byte ptr [ESP + 0x1a0]
MOV EDI,dword ptr [ESP + 0x1c]
MOV ESI,dword ptr [ESP + 0x18]
SHRD ESI,EDI,CL
SHR EDI,CL
TEST CL,0x20
JZ 0x0009aae3
MOV ESI,EDI
XOR EDI,EDI
MOV ECX,ESI
MOV dword ptr [ESP + 0x48],ESI
MOV dword ptr [ESP + 0x4c],EDI
AND ECX,0x1
MOV dword ptr [ESP + 0x18],ECX
MOV ECX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ECX + 0x24]
TEST CH,0x4
JNZ 0x0009aebb
TEST CH,0x1
JZ 0x0009ab12
TEST CL,0x5
JNZ 0x0009bbb9
IMUL EAX,EAX,0x54
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESI + EAX*0x1 + 0x2f4]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,ECX
AND EAX,0x102
CMP EAX,0x102
JZ 0x0009bc7c
TEST CH,0x2
JZ 0x0009b779
MOV EAX,dword ptr [ESP + 0x8]
TEST CL,0x20
MOVZX EBX,word ptr [EAX + 0x1c]
MOVZX ESI,word ptr [EAX + 0x18]
MOVZX EDI,word ptr [EAX + 0x1a]
MOV word ptr [ESP + 0x80],BX
MOV EBX,dword ptr [EAX + 0x20]
MOV word ptr [ESP + 0x90],SI
MOV word ptr [ESP + 0x94],DI
MOV dword ptr [ESP + 0x6c],ESI
MOV dword ptr [ESP + 0x84],ESI
MOV dword ptr [ESP + 0x44],EBX
MOV EBX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x60],EBX
JZ 0x0009c464
MOV EAX,dword ptr [EAX + 0x30]
LEA EDX,[ESI + 0x1]
MOVZX EBX,DI
MOV EAX,dword ptr [EAX + ESI*0x4]
MOV dword ptr [ESP + 0x7c],EAX
MOV EAX,dword ptr [ESP + 0x14]
TEST CL,0x10
MOV EAX,dword ptr [EAX + 0x2c]
LEA ESI,[EAX + 0x1]
MOV dword ptr [ESP + 0x34],ESI
JZ 0x0009c44f
MOV ESI,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [ESI + 0x30]
MOV ESI,dword ptr [ESI + EDX*0x4]
MOVZX EDX,word ptr [ESP + 0x80]
MOV dword ptr [ESP + 0x70],ESI
CMP EBX,EDX
CMOVL EBX,EDX
TEST byte ptr [ESI + 0xb],0x1
JNZ 0x0009c6b3
MOV EDX,dword ptr [ESP + 0x7c]
MOV byte ptr [ESP + 0x88],0x0
TEST EDX,EDX
JZ 0x0009c7aa
AND ECX,0x80030
MOV dword ptr [ESP + 0x74],0x0
CMP ECX,0x80000
JZ 0x0009ca7f
MOV ESI,dword ptr [ESP + 0x44]
MOVZX EDI,word ptr [ESP + 0x90]
CMP word ptr [ESI + 0x32],DI
JBE 0x0009c475
MOV EDX,dword ptr [ESI + 0x1c]
MOV ESI,dword ptr [ESP + 0x6c]
CMP byte ptr [EDX + ESI*0x1],0x0
SETZ DL
MOVZX EDX,DL
CMP EDX,dword ptr [ESP + 0x18]
JZ 0x0009c48d
MOV byte ptr [ESP + 0x98],0x0
MOV ESI,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x54],EDI
MOV EDI,dword ptr [EBP + 0x48]
MOVZX ECX,word ptr [EDI + 0x2a]
MOV EDX,dword ptr [EDI + 0x20]
MOV dword ptr [ESP + 0x64],EDI
MOVZX EDI,word ptr [EDI + 0x18]
MOV dword ptr [ESP + 0x48],ECX
ADD EBX,EDI
MOV dword ptr [ESP + 0x5c],EDI
ADD EAX,EBX
MOV dword ptr [ESP + 0x78],EBX
MOV dword ptr [ESI + 0x2c],EAX
MOV EAX,dword ptr [ESI]
CALL 0x0002e410
MOV EDX,EAX
MOV EAX,dword ptr [ESI]
CALL 0x000300b0
MOV ECX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x68],EAX
MOVZX ESI,CX
TEST CX,CX
MOV EDI,ESI
JZ 0x0009ad79
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x0009c565
SUB ESP,0xc
MOV EDX,0x21
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x64]
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,EBX
CALL 0x00049630
MOV EDX,0xb
MOV EAX,EBX
XOR ECX,ECX
MOV dword ptr [ESP],0x0
CALL 0x00049630
ADD ESP,0x10
MOV EBX,EAX
MOV EDX,0x16
SUB ESP,0x8
PUSH dword ptr [ESP + 0x3c]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x000493f0
MOV ECX,dword ptr [ESP + 0x64]
ADD ESP,0x10
MOV EDX,dword ptr [ECX]
CMP byte ptr [EDX + 0x4d],0x0
JNZ 0x0009cf19
MOV EDX,dword ptr [ECX + 0x64]
MOV dword ptr [ESP + 0x54],ECX
LEA ECX,[EAX + EAX*0x4]
TEST EBX,EBX
LEA ECX,[EDX + ECX*0x4]
MOV byte ptr [ECX + 0x1],0xfd
MOV dword ptr [ECX + 0x10],ESI
MOV ECX,dword ptr [ESP + 0x54]
MOV dword ptr [EBP + 0x14],EAX
MOV EAX,dword ptr [ECX + 0x68]
JNS 0x0009ad2e
MOV EDX,dword ptr [ECX + 0x64]
LEA EBX,[EAX + -0x1]
LEA ECX,[EBX + EBX*0x4]
LEA EDX,[EDX + ECX*0x4]
MOV dword ptr [ESP + 0x58],EDI
MOV dword ptr [ESP + 0x8c],EBP
XOR EBX,EBX
MOV EDI,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ESP + 0x48]
MOV dword ptr [EDX + 0x8],EAX
LEA EAX,[EDI + EBX*0x1]
SUB ESP,0x8
MOV ECX,EBP
MOV EDX,0x59
PUSH EAX
PUSH EBX
ADD EBX,0x1
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x000493f0
ADD ESP,0x10
CMP EBX,ESI
JNZ 0x0009ad4c
MOV EDI,dword ptr [ESP + 0x58]
MOV EBP,dword ptr [ESP + 0x8c]
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
SETNZ byte ptr [ESP + 0x8c]
CMP dword ptr [ESP + 0x5c],ESI
JLE 0x0009bcfc
LEA EAX,[ESI*0x4 + 0x0]
MOV dword ptr [ESP + 0x58],EBP
MOV dword ptr [ESP + 0x48],EAX
JMP 0x0009adce
MOV EAX,dword ptr [EBX]
TEST byte ptr [EAX + 0x5],0x8
JZ 0x0009adbc
CMP byte ptr [ESP + 0x8c],0x0
JZ 0x0009adbc
MOV EAX,dword ptr [ESP + 0x68]
MOV byte ptr [EAX + EDI*0x1],0x41
ADD EDI,0x1
ADD dword ptr [ESP + 0x48],0x4
CMP dword ptr [ESP + 0x5c],EDI
JZ 0x0009bcf8
MOV EAX,dword ptr [ESP + 0x64]
MOV ESI,dword ptr [ESP + 0x48]
SUB ESP,0x4
MOV EBP,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EAX + 0x30]
MOV EBX,dword ptr [EAX + ESI*0x1]
LEA ESI,[EBP + EDI*0x1]
PUSH ESI
PUSH dword ptr [ESP + 0x20]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x68]
MOV EDX,EBX
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x0009a2d0
ADD ESP,0x10
CMP ESI,EAX
MOV ECX,EAX
JZ 0x0009ae1c
CMP dword ptr [ESP + 0x78],0x1
JNZ 0x0009bcde
TEST EBP,EBP
JNZ 0x0009c22e
MOV dword ptr [ESP + 0x34],ECX
MOVZX EAX,word ptr [EBX + 0xc]
TEST AL,0x1
JNZ 0x0009ada2
TEST AH,0x1
JNZ 0x0009adbc
TEST byte ptr [EBX + 0xb],0x8
MOV EAX,dword ptr [EBX]
MOV ESI,dword ptr [EAX + 0x10]
JZ 0x0009c4d9
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x0009adbc
MOVSX EDX,byte ptr [EAX + EDI*0x1]
MOV EAX,ESI
MOV EBX,EDX
CALL 0x0002e3d0
CMP AL,0x41
JZ 0x0009adb4
CMP BL,0x41
JZ 0x0009adb4
MOVZX EAX,byte ptr [ESI]
LEA EDX,[EAX + 0x56]
CMP DL,0x1
MOV EDX,0x0
JA 0x0009ae96
MOV EBP,dword ptr [ESP + 0x48]
MOV ESI,dword ptr [ESI + 0xc]
CMP AL,0xaa
MOV EAX,0x1
CMOVZ EDX,EAX
MOVZX EAX,byte ptr [ESI]
LEA ECX,[EAX + 0x56]
CMP CL,0x1
JBE 0x0009ae7a
MOV dword ptr [ESP + 0x48],EBP
CMP AL,0xad
JNZ 0x0009ae9e
MOVZX EAX,byte ptr [ESI + 0x2]
SUB EAX,0x73
CMP AL,0x31
JA 0x0009adbc
MOV ECX,dword ptr [ESP + 0x28]
MOVZX EAX,AL
MOV EBP,dword ptr [ECX + EAX*0x4 + 0xfffd19dc]
ADD EBP,ECX
JMP EBP
MOV EAX,dword ptr [ESP + 0x8]
MOVZX EDI,word ptr [EAX + 0x28]
MOV EAX,dword ptr [ESP + 0x14]
LEA EDX,[EDI + 0x2]
CALL 0x00025510
MOV ESI,dword ptr [EBP + 0xc]
TEST EDI,EDI
MOV dword ptr [ESP + 0x44],EAX
MOV dword ptr [ESP + 0x48],ESI
JZ 0x0009af4f
MOV ESI,EAX
MOV dword ptr [ESP + 0x34],EBP
XOR EBX,EBX
ADD ESI,0x2
MOV EBP,dword ptr [ESP + 0x8]
JMP 0x0009af1b
SUB ESP,0x4
PUSH ECX
PUSH dword ptr [ESP + 0x20]
PUSH EBX
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x0009a2d0
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0x58],EAX
ADD ESP,0x10
ADD EBX,0x1
CMP EDI,EBX
JZ 0x0009af4b
MOV EAX,dword ptr [EBP + 0x30]
LEA ECX,[ESI + EBX*0x1]
MOV EDX,dword ptr [EAX + EBX*0x4]
TEST EDX,EDX
JZ 0x0009af14
TEST byte ptr [EDX + 0xc],0x1
JNZ 0x0009aef0
MOV EAX,dword ptr [EDX]
SUB ESP,0xc
ADD EBX,0x1
MOV EDX,dword ptr [EAX + 0x10]
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00095030
ADD ESP,0x10
CMP EDI,EBX
JNZ 0x0009af1b
MOV EBP,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV EDX,0x45
MOV ECX,dword ptr [EBX + 0x18]
PUSH dword ptr [ESP + 0x50]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EAX,ESI
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x54]
MOV ECX,EDI
MOV EDX,0x45
MOV dword ptr [ESP + 0x1c],ESI
ADD EAX,0x1
MOV dword ptr [ESP],EAX
MOV EAX,ESI
CALL 0x00049630
POP EAX
POP EDX
CMP byte ptr [EBX + 0x1c],0x1
MOV EAX,EBX
MOV EDX,0x9
MOV ESI,dword ptr [EAX + 0x20]
MOV dword ptr [ESP + 0x10],EAX
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x54]
MOV ECX,dword ptr [ESP + 0x48]
SBB EBX,EBX
MOV EAX,dword ptr [ESP + 0x1c]
OR EBX,0xfffffff9
CALL 0x000493f0
MOV ECX,ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDX,EAX
MOV dword ptr [ESP],EBX
MOV EAX,ESI
CALL 0x000436c0
MOV EAX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x48]
ADD ESP,0x10
MOV byte ptr [EAX + 0x1c],0x0
MOV dword ptr [EBP + 0x38],EBX
MOV EBX,dword ptr [ESP + 0x10]
CMP byte ptr [EBX + 0x2e],0x1
LEA EBX,[EDI + -0x1]
LEA EDI,[EBX*0x4 + 0x0]
SBB EAX,EAX
AND EAX,0xffffff90
SUB EAX,0x53
MOV byte ptr [EBP + 0x35],AL
MOV EAX,dword ptr [ESI + 0x68]
MOV ESI,dword ptr [EBP + 0x40]
MOV dword ptr [EBP + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x18],ESI
LEA ESI,[ESP + 0xe4]
ADD EAX,0x2
CMP EBX,-0x1
MOV dword ptr [ESP + 0x48],ESI
MOV dword ptr [ESP + 0x44],EAX
JZ 0x0009b1e0
MOV dword ptr [ESP + 0x34],EBP
MOV EBP,dword ptr [ESP + 0x8]
JMP 0x0009b16c
SUB dword ptr [ESP + 0x18],0x1
CMP EBX,0xf
JLE 0x0009d4a8
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [EAX + 0xc]
MOVZX EAX,byte ptr [EDX]
CMP AL,0xad
JNZ 0x0009b056
MOVZX EAX,byte ptr [EDX + 0x2]
CMP AL,0xae
JZ 0x0009bc4c
CMP AL,0x88
JZ 0x0009bc72
MOV EAX,dword ptr [ESP + 0x20]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x0009b0d4
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + EAX*0x4]
SHL EAX,0x2
ADD EAX,dword ptr [ECX + 0x44]
MOV EDX,dword ptr [EAX + 0x4]
TEST EDX,EDX
JNS 0x0009b096
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x68]
LEA EDX,[EAX + -0x1]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x28]
CMP byte ptr [ECX + 0x4d],0x0
LEA EAX,[EAX + 0x15d0]
JNZ 0x0009b0b9
MOV EAX,dword ptr [ESP + 0xc]
LEA EDX,[EDX + EDX*0x4]
MOV EAX,dword ptr [EAX + 0x64]
LEA EAX,[EAX + EDX*0x4]
SUB ESP,0x8
MOVZX EDX,byte ptr [EAX]
MOV ECX,dword ptr [EAX + 0x4]
PUSH dword ptr [EAX + 0xc]
PUSH dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000493f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
XOR ECX,ECX
MOV EDX,0x35
CALL 0x000556e0
TEST EAX,EAX
MOV ECX,EAX
MOV dword ptr [ESP + 0x8],EAX
JZ 0x0009b15d
MOV EAX,dword ptr [ESI]
MOV ESI,ECX
MOV EDX,0xad
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ECX + 0xc],EAX
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0xe4],0x0
MOV dword ptr [ESP + 0xe8],0x0
CALL 0x0002fd80
TEST EAX,EAX
MOV dword ptr [ESI + 0x10],EAX
JZ 0x0009b147
MOV ECX,dword ptr [ESP + 0x44]
LEA EDX,[ECX + EBX*0x1]
MOV dword ptr [EAX + 0x1c],EDX
PUSH 0x10
MOV EAX,dword ptr [ESP + 0x38]
PUSH dword ptr [EAX + 0x18]
PUSH ESI
PUSH dword ptr [ESP + 0x20]
CALL 0x00092bc0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0xc],0x0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00053f30
SUB EBX,0x1
SUB EDI,0x4
CMP EBX,-0x1
JZ 0x0009bc69
MOV EAX,dword ptr [EBP + 0x30]
MOV ESI,dword ptr [EAX + EDI*0x1]
TEST byte ptr [ESI + 0xc],0x1
JNZ 0x0009b038
CMP EBX,0xf
JG 0x0009b15d
MOVZX EAX,word ptr [EBP + 0x1e]
BT EAX,EBX
JNC 0x0009b15d
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,ESI
CALL 0x00020250
JMP 0x0009b15d
AND EDX,0x20
JNZ 0x0009c50f
MOV ESI,dword ptr [ESP + 0x28]
MOV EDI,dword ptr [ESP + 0x18]
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x44]
MOVZX EAX,byte ptr [ESI + EDI*0x1 + 0xfffd2764]
MOVZX EDX,byte ptr [ESI + EDI*0x1 + 0xfffd2762]
MOV dword ptr [EBP + 0x38],ECX
MOV byte ptr [EBP + 0x35],AL
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD EAX,0x1
MOV byte ptr [EBP + 0x37],0x1
ADD ESP,0x10
MOV dword ptr [EBP + 0x3c],EAX
NOP
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
IMUL EAX,dword ptr [ESP + 0x40],0x44
ADD EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x18],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [EAX + 0x54]
MOV EBX,dword ptr [EAX + 0x5c]
TEST ESI,ESI
JLE 0x0009b538
MOV dword ptr [ESP + 0x20],0x0
JMP 0x0009b2dd
MOV EAX,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EBX]
TEST byte ptr [EAX + 0x2c],0x8
JZ 0x0009b236
TEST byte ptr [EDI + 0x4],0x1
JZ 0x0009b2d5
CMP dword ptr [ESP + 0x8],0x1
JZ 0x0009b5b8
CMP dword ptr [ESP + 0x8],0x3
JNZ 0x0009b594
AND CH,0x2
JZ 0x0009b570
MOV EAX,dword ptr [EBP + 0x2c]
TEST EAX,EAX
JZ 0x0009b570
MOV ECX,EAX
AND EAX,0x1
SHR ECX,0x1
CMP EAX,0x1
SBB EDX,EDX
SUB ESP,0xc
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x1c]
AND EDX,0xfffffffe
ADD EDX,0x14
CALL 0x00049630
MOV dword ptr [ESP + 0x44],EAX
PUSH 0x10
PUSH dword ptr [ESP + 0x38]
PUSH EDI
PUSH dword ptr [ESP + 0x30]
CALL 0x00092bc0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x0009b2d0
MOV EDI,dword ptr [ESP + 0xc]
TEST EAX,EAX
MOV EDX,dword ptr [EDI + 0x68]
MOV EDI,dword ptr [EDI]
LEA ECX,[EDX + -0x1]
CMOVS EAX,ECX
CMP byte ptr [EDI + 0x4d],0x0
MOV ECX,dword ptr [ESP + 0x28]
LEA ECX,[ECX + 0x15d0]
JNZ 0x0009b2cd
MOV EDI,dword ptr [ESP + 0xc]
LEA ECX,[EAX + EAX*0x4]
MOV EAX,dword ptr [EDI + 0x64]
LEA ECX,[EAX + ECX*0x4]
MOV dword ptr [ECX + 0x8],EDX
OR word ptr [EBX + 0xa],0x4
ADD EBX,0x30
SUB ESI,0x1
JZ 0x0009b30a
MOVZX ECX,word ptr [EBX + 0xa]
TEST CL,0x6
JNZ 0x0009b2d5
MOV EAX,dword ptr [EBX + 0x28]
MOV EDX,dword ptr [EBX + 0x2c]
AND EAX,dword ptr [EBP + 0x4c]
AND EDX,dword ptr [EBP + 0x50]
OR EDX,EAX
JZ 0x0009b220
MOV EAX,dword ptr [ESP + 0x10]
ADD EBX,0x30
OR byte ptr [EAX + 0x30],0x2
SUB ESI,0x1
JNZ 0x0009b2dd
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JNZ 0x0009b200
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [EAX + 0x54]
MOV EDI,dword ptr [EAX + 0x5c]
TEST EBX,EBX
JLE 0x0009b538
IMUL EAX,dword ptr [ESP + 0x40],0x44
MOV ESI,EBX
MOV dword ptr [ESP + 0x18],EBP
ADD EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x8],EAX
NOP
TEST byte ptr [EDI + 0xa],0x6
JNZ 0x0009b528
MOVZX EAX,word ptr [EDI + 0xc]
TEST AL,0x82
JZ 0x0009b528
TEST AH,0x8
JZ 0x0009b528
MOV ECX,dword ptr [ESP + 0x38]
CMP dword ptr [EDI + 0x14],ECX
JNZ 0x0009b528
MOV EAX,dword ptr [ESP + 0x8]
TEST byte ptr [EAX + 0x2c],0x8
JNZ 0x0009b528
MOV EAX,dword ptr [EDI]
MOV EBX,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [EDI + 0x1c]
MOV dword ptr [ESP + 0x118],EBX
MOV dword ptr [ESP + 0x11c],EBX
MOV EBX,0x100
MOV dword ptr [ESP + 0x12c],0x83
MOV dword ptr [ESP + 0x130],0x0
CMP EAX,-0x2
MOV dword ptr [ESP + 0x134],ECX
MOV dword ptr [ESP + 0x120],0x0
MOV dword ptr [ESP + 0x124],0x0
MOV word ptr [ESP + 0x128],BX
MOV byte ptr [ESP + 0x12a],0x1
JZ 0x0009b528
LEA EBP,[ESP + 0x118]
MOV word ptr [ESP + 0x160],AX
MOV EAX,EBP
CALL 0x00061a10
TEST EAX,EAX
JZ 0x0009b528
MOV dword ptr [ESP + 0x20],ESI
XOR EBX,EBX
MOV dword ptr [ESP + 0x28],EDI
MOV ESI,EBP
MOV EDX,dword ptr [EAX + 0x20]
MOV ECX,dword ptr [EAX + 0x24]
MOV EDI,dword ptr [ESP + 0x2c]
MOV EBP,dword ptr [ESP + 0x30]
AND EDI,EDX
AND EBP,ECX
OR EBP,EDI
JNZ 0x0009b439
OR ECX,EDX
JNZ 0x0009b434
TEST byte ptr [EAX + 0xc],0x82
JNZ 0x0009c830
TEST EBX,EBX
CMOVZ EBX,EAX
MOV EAX,ESI
CALL 0x00061a10
TEST EAX,EAX
JNZ 0x0009b410
TEST EBX,EBX
MOV ESI,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x28]
JZ 0x0009b528
TEST byte ptr [EBX + 0xa],0x4
JNZ 0x0009b528
TEST byte ptr [EBX + 0xc],0x1
MOV EAX,dword ptr [EBX]
JZ 0x0009b47b
TEST byte ptr [EAX + 0x5],0x8
JZ 0x0009b47b
MOV EDX,dword ptr [EAX + 0x14]
MOV EDX,dword ptr [EDX + 0x1c]
CMP dword ptr [EDX],0x1
JG 0x0009b528
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0xe4],EDX
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0xe8],EDX
MOV EDX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0xec],EDX
MOV EDX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0xf0],EDX
MOV EDX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0xf4],EDX
MOV EDX,dword ptr [EAX + 0x14]
MOV dword ptr [ESP + 0xf8],EDX
MOV EDX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0xfc],EDX
MOV EDX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x100],EDX
MOV EDX,dword ptr [EAX + 0x20]
MOV dword ptr [ESP + 0x104],EDX
MOV EDX,dword ptr [EAX + 0x24]
MOV dword ptr [ESP + 0x108],EDX
MOV EDX,dword ptr [EAX + 0x28]
MOV dword ptr [ESP + 0x10c],EDX
MOV EDX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x110],EDX
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x114],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0xf0],EAX
PUSH 0x10
PUSH dword ptr [ESP + 0x28]
LEA EAX,[ESP + 0xec]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00092bc0
ADD ESP,0x10
LEA ESI,[ESI]
ADD EDI,0x30
SUB ESI,0x1
JNZ 0x0009b340
MOV EBP,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JNZ 0x0009b6b0
MOV EAX,dword ptr [EBP + 0x4c]
MOV EDX,dword ptr [EBP + 0x50]
MOV ESI,dword ptr [ESP + 0x17c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x0009d539
ADD ESP,0x18c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH 0x10
PUSH dword ptr [ESP + 0x28]
PUSH EDI
PUSH dword ptr [ESP + 0x20]
CALL 0x00092bc0
ADD ESP,0x10
JMP 0x0009b2d0
MOVZX ECX,word ptr [EBX + 0xa]
TEST CH,0x10
JZ 0x0009b24c
MOV EDI,dword ptr [ESP + 0x20]
MOV EAX,0x3
TEST EDI,EDI
CMOVNZ EAX,EDI
MOV dword ptr [ESP + 0x20],EAX
JMP 0x0009b2d5
MOV EAX,dword ptr [EBP + 0x4]
XOR ECX,ECX
XOR EDX,EDX
MOV dword ptr [ESP + 0x34],EAX
LEA EAX,[ESP + 0xe4]
MOV dword ptr [EAX + EDX*0x1],ECX
ADD EDX,0x4
CMP EDX,0x18
JC 0x0009b5ca
MOV ECX,dword ptr [ESP + 0x34]
TEST EDI,EDI
MOV dword ptr [ESP + 0xcc],ECX
MOV ECX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0xc8],ECX
MOV ECX,dword ptr [ESP + 0x28]
LEA EDX,[ECX + 0xfff1f680]
MOV dword ptr [ESP + 0xe8],EDX
LEA EDX,[ESP + 0xc8]
MOV dword ptr [ESP + 0xfc],EDX
JZ 0x0009b590
MOV EDX,EDI
CALL 0x0004c8d0
CMP word ptr [ESP + 0xf8],0x0
JZ 0x0009b590
MOV dword ptr [ESP + 0x20],0x2
JMP 0x0009b2d5
XOR EAX,EAX
XOR EDX,EDX
TEST CL,0x20
SETZ AL
SETNZ DL
SHL EDX,CL
SHL EAX,CL
MOV ECX,EAX
MOV EAX,EDX
NOT ECX
NOT EAX
AND ECX,dword ptr [ESP + 0x2c]
AND EAX,dword ptr [ESP + 0x30]
MOV EDX,ECX
JMP 0x0009a9fc
SUB ESP,0x8
MOV ESI,dword ptr [ECX + 0x24]
PUSH dword ptr [ECX + 0x20]
PUSH 0x0
MOV EDI,dword ptr [ESP + 0x1c]
MOV EDX,0xd
MOV ECX,ESI
MOV EAX,EDI
CALL 0x000493f0
MOV ECX,ESI
MOV EDX,0xe
MOV EAX,EDI
MOV dword ptr [ESP],EBX
CALL 0x00049630
ADD ESP,0x10
MOV dword ptr [EBP + 0x3c],EAX
MOV byte ptr [EBP + 0x35],0xb
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
JMP 0x0009b1f0
MOV ESI,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV ECX,0x1
MOV EDX,dword ptr [ESI + 0x68]
MOV dword ptr [EBP + 0x1c],EDX
PUSH EAX
MOV EDX,0x45
MOV EAX,ESI
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x20]
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0x50]
MOV ECX,dword ptr [EAX + 0x54]
MOV EBX,dword ptr [EAX + 0x5c]
MOV EAX,dword ptr [EBP + 0x4c]
TEST ECX,ECX
JLE 0x0009b549
MOV dword ptr [ESP + 0x8],EBP
XOR ESI,ESI
MOV EBP,EAX
MOV EDI,EDX
LEA ESI,[ESI]
TEST byte ptr [EBX + 0xa],0x6
JNZ 0x0009b736
MOV EAX,dword ptr [EBX + 0x28]
MOV EDX,dword ptr [EBX + 0x2c]
AND EAX,EBP
AND EDX,EDI
OR EDX,EAX
JNZ 0x0009b736
PUSH 0x10
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [EBX]
PUSH dword ptr [ESP + 0x20]
CALL 0x00092bc0
MOV EAX,dword ptr [ESP + 0x20]
OR word ptr [EBX + 0xa],0x4
MOV ECX,dword ptr [EAX + 0x54]
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV EBP,dword ptr [EAX + 0x4c]
MOV EDI,dword ptr [EAX + 0x50]
ADD ESI,0x1
ADD EBX,0x30
CMP ESI,ECX
JL 0x0009b6f8
MOV EAX,EBP
MOV EDX,EDI
JMP 0x0009b549
MOV ESI,dword ptr [ESP + 0x14]
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x45
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [ESP + 0x40],EAX
ADD EAX,0x1
MOV dword ptr [ESI + 0x2c],EAX
MOV dword ptr [EBP],EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009aa51
AND CH,0x20
JZ 0x0009b197
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [ESP + 0x70],EAX
ADD EAX,0x1
MOV dword ptr [ESI + 0x28],EAX
MOV EAX,ESI
MOV ESI,dword ptr [ESI + 0x2c]
MOV EDI,dword ptr [EAX + 0x38]
ADD ESI,0x1
MOV dword ptr [ESP + 0x18],EDI
SUB EDI,0x1
MOV dword ptr [EAX + 0x2c],ESI
MOV dword ptr [EAX + 0x38],EDI
MOV dword ptr [ESP + 0x88],EDI
IMUL EAX,dword ptr [ESP + 0x40],0x44
MOV EDI,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x84],ESI
MOV EAX,dword ptr [EDI + EAX*0x1 + 0x18]
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x30]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [EAX + 0x1c]
MOV byte ptr [EBP + 0x35],0x41
MOV dword ptr [EBP + 0x38],ESI
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOVZX EAX,byte ptr [EAX + 0x2c]
CMP AL,0x1
JA 0x0009c5a2
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x10]
TEST byte ptr [EAX + 0x28],0x10
JNZ 0x0009d01a
MOV EAX,dword ptr [ESP + 0x54]
TEST byte ptr [EAX + 0x24],0x80
JZ 0x0009d35b
MOV EBX,dword ptr [EAX + 0x8]
TEST EBX,EBX
JNZ 0x0009b83b
JMP 0x0009ca48
MOV EBX,dword ptr [EBX + 0x14]
TEST EBX,EBX
JZ 0x0009ca48
MOVZX EAX,byte ptr [EBX + 0x37]
AND EAX,0x3
CMP AL,0x2
JNZ 0x0009b830
MOV ESI,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV EDX,0x64
MOV ECX,dword ptr [ESI + 0x28]
LEA EAX,[ECX + 0x1]
MOV dword ptr [ESP + 0x70],ECX
MOV dword ptr [ESI + 0x28],EAX
MOVZX EAX,word ptr [EBX + 0x32]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
MOV EDX,EBX
MOV EAX,ESI
CALL 0x00051750
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x18],ESI
ADD ESI,0x1
MOV dword ptr [ESP + 0x5c],ESI
MOV dword ptr [EAX + 0x2c],ESI
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x45
PUSH dword ptr [ESP + 0x90]
MOV EAX,dword ptr [ESP + 0x1c]
XOR EBX,EBX
XOR ESI,ESI
CALL 0x00049630
MOV dword ptr [ESP + 0x9c],EAX
MOV EAX,dword ptr [ESP + 0x20]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EAX + 0x54]
CMP EDX,0x1
JLE 0x0009d0ac
LEA EAX,[EBX + EBX*0x2]
SHL EAX,0x4
ADD EAX,dword ptr [EDI + 0x5c]
CMP EAX,dword ptr [ESP + 0x74]
JZ 0x0009b90a
TEST byte ptr [EAX + 0xa],0x6
JNZ 0x0009b90a
TEST word ptr [EAX + 0xc],0x1fff
JZ 0x0009b90a
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0009b8f8
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0005dca0
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,ESI
CALL 0x000559f0
MOV EDX,dword ptr [EDI + 0x54]
MOV ESI,EAX
ADD EBX,0x1
CMP EBX,EDX
JL 0x0009b8ca
TEST ESI,ESI
JZ 0x0009d0ac
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,ESI
MOV EDX,0x1002c
CALL 0x000556e0
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [ESP + 0x10]
SUB ESP,0x4
MOVZX EAX,word ptr [EAX + 0x28]
MOV word ptr [ESP + 0x1c],AX
MOV ESI,dword ptr [ESP + 0x2c]
MOV EBX,EAX
AND BX,0x400
OR EBX,0x20
LEA EAX,[ESI + 0xfffcc141]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x20]
CALL 0x000496a0
MOV EAX,dword ptr [ESP + 0x44]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0xc]
TEST EDX,EDX
JLE 0x0009d270
LEA EAX,[ESI + 0xfffcc150]
MOV dword ptr [ESP + 0x90],EBP
XOR EDI,EDI
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x60],0x0
MOV dword ptr [ESP + 0x7c],EAX
MOVSX EAX,BX
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x80],EAX
MOV EBP,dword ptr [ESP + 0x14]
JMP 0x0009ba60
SUB ESP,0xc
MOV EDX,0xc
MOV EAX,ESI
PUSH dword ptr [ESP + 0x94]
MOV ECX,dword ptr [ESP + 0x94]
CALL 0x00049630
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x44]
MOV EAX,0x1
TEST byte ptr [EDI + 0x30],0x2
CMOVZ EAX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [EDI + 0x330]
TEST byte ptr [EAX + 0x25],0x2
JZ 0x0009ba03
CMP dword ptr [ESP + 0x18],0x1
MOV EAX,dword ptr [EAX + 0x20]
JZ 0x0009cac9
CMP dword ptr [ESP + 0x60],EAX
JZ 0x0009cac9
MOV dword ptr [ESP + 0x60],0x0
MOV EAX,dword ptr [ESP + 0x44]
CALL 0x00069230
MOV EAX,dword ptr [EBP + 0xd8]
TEST EAX,EAX
JZ 0x0009ba47
MOV EDX,dword ptr [EBP + 0x8]
JNS 0x0009ba29
MOV EAX,dword ptr [EDX + 0x68]
SUB EAX,0x1
MOV EBX,dword ptr [EDX]
MOV EDI,dword ptr [ESP + 0x28]
CMP byte ptr [EBX + 0x4d],0x0
LEA ECX,[EDI + 0x15d0]
JNZ 0x0009ba44
LEA ECX,[EAX + EAX*0x4]
MOV EAX,dword ptr [EDX + 0x64]
LEA ECX,[EAX + ECX*0x4]
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [EBP + 0xd8],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EAX + 0xc]
MOV EDI,dword ptr [ESP + 0x18]
CMP EDI,EDX
JGE 0x0009cb85
MOV EBX,dword ptr [ESP + 0x34]
LEA EAX,[EDI + EDI*0x2]
SHL EAX,0x4
ADD EAX,dword ptr [EBX + 0x14]
LEA EBX,[EDI + 0x1]
MOV dword ptr [ESP + 0x18],EBX
MOV EBX,dword ptr [ESP + 0x38]
CMP dword ptr [EAX + 0x14],EBX
JZ 0x0009ba83
TEST byte ptr [EAX + 0xd],0x4
JZ 0x0009ba54
MOV EBX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x0009ba92
MOV dword ptr [EAX + 0xc],EBX
MOV EBX,EAX
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x80]
PUSH 0x1
PUSH EBP
CALL 0x000496a0
PUSH dword ptr [ESP + 0x80]
PUSH dword ptr [ESP + 0x94]
MOV ECX,EBX
PUSH 0x0
PUSH 0x0
MOV EAX,EBP
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0009d580
MOV dword ptr [ESP + 0x64],EAX
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0009ba4d
MOV EAX,dword ptr [EBP + 0x74]
TEST EAX,EAX
CMOVZ EAX,EBP
CMP byte ptr [EAX + 0xcb],0x2
JZ 0x0009cff8
MOV EAX,dword ptr [ESP + 0x10]
TEST byte ptr [EAX + 0x28],0x10
JNZ 0x0009b9a9
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x58],EAX
SUB EAX,0x1
CMP EAX,EDI
MOV EAX,0xffffffff
CMOVZ EDI,EAX
TEST byte ptr [EDX + 0x24],0x80
JNZ 0x0009cca1
SUB ESP,0x8
MOV EAX,ESI
MOV EBX,dword ptr [ESP + 0x64]
PUSH EBX
PUSH -0x1
MOV ECX,dword ptr [ESP + 0x48]
CALL 0x00095620
POP ECX
POP EAX
PUSH EBX
PUSH 0x0
MOV EDX,0x2d
MOV ECX,dword ptr [ESP + 0x74]
MOV EAX,ESI
CALL 0x000493f0
MOV EBX,EAX
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x0009bb63
MOV EDX,dword ptr [ESI + 0x64]
LEA EAX,[EBX + EBX*0x4]
LEA EAX,[EDX + EAX*0x4]
MOV byte ptr [EAX + 0x1],0xfd
MOV dword ptr [EAX + 0x10],EDI
SUB ESP,0xc
MOV EDX,0xc
MOV EAX,ESI
PUSH dword ptr [ESP + 0x94]
MOV ECX,dword ptr [ESP + 0x94]
CALL 0x00049630
ADD ESP,0x10
TEST EBX,EBX
JZ 0x0009b9c9
MOV EDX,dword ptr [ESI + 0x68]
MOV ECX,dword ptr [ESI]
TEST EBX,EBX
LEA EAX,[EDX + -0x1]
CMOVS EBX,EAX
CMP byte ptr [ECX + 0x4d],0x0
MOV EAX,dword ptr [ESP + 0x28]
LEA EAX,[EAX + 0x15d0]
JNZ 0x0009bbb1
MOV EAX,dword ptr [ESI + 0x64]
LEA ECX,[EBX + EBX*0x4]
LEA EAX,[EAX + ECX*0x4]
MOV dword ptr [EAX + 0x8],EDX
JMP 0x0009b9c9
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x4
MOV ECX,EBP
MOV EAX,dword ptr [EAX + 0x30]
MOV EBX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [EAX + 0x2c]
MOV EDX,EBX
MOV dword ptr [ESP + 0xc],ESI
ADD ESI,0x1
MOV dword ptr [EAX + 0x2c],ESI
PUSH ESI
PUSH dword ptr [ESP + 0x20]
PUSH 0x0
CALL 0x0009a2d0
ADD ESP,0x10
CMP ESI,EAX
MOV EDI,EAX
JZ 0x0009bbfe
TEST ESI,ESI
JZ 0x0009bbfe
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,ESI
CALL 0x000254e0
SUB ESP,0x8
MOV EDX,0x1f
PUSH EDI
PUSH dword ptr [EBP + 0x10]
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000493f0
MOV byte ptr [EBP + 0x35],0xad
MOV EAX,dword ptr [EBX + 0x28]
ADD ESP,0x10
AND EAX,dword ptr [EBP + 0x4c]
MOV EDX,dword ptr [EBX + 0x2c]
AND EDX,dword ptr [EBP + 0x50]
OR EDX,EAX
JNZ 0x0009b1e0
OR word ptr [EBX + 0xa],0x4
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
JMP 0x0009b1f0
MOV EAX,dword ptr [EDX + 0x14]
MOV EAX,dword ptr [EAX]
CMP EAX,0x1
JZ 0x0009b066
SUB EBX,0x1
SUB EDI,0x4
CMP EBX,-0x1
JNZ 0x0009b16c
MOV EBP,dword ptr [ESP + 0x34]
JMP 0x0009b1e0
MOV EAX,dword ptr [EDX + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX]
JMP 0x0009bc51
TEST CL,0x20
JNZ 0x0009c274
AND ECX,0x10
JNZ 0x0009c528
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JNZ 0x0009d0b9
SUB ESP,0xc
MOV EDX,0x25
PUSH dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,ESI
CALL 0x00049630
MOV EAX,dword ptr [ESI + 0x68]
ADD ESP,0x10
MOV byte ptr [EBP + 0x35],0x5
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [EBP + 0x3c],EAX
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
MOV dword ptr [EBP + 0x38],ESI
JMP 0x0009b1f0
SUB ESP,0xc
MOV EDX,0x4e
PUSH ESI
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009ae1c
MOV EBP,dword ptr [ESP + 0x58]
CMP word ptr [ESP + 0x80],0x0
JZ 0x0009bd15
CMP byte ptr [ESP + 0x8c],0x0
JNZ 0x0009cf78
MOV dword ptr [ESP + 0x58],0x0
MOV EBX,dword ptr [ESP + 0x74]
TEST EBX,EBX
JZ 0x0009c447
MOV EDI,dword ptr [EBP + 0x28]
CMP word ptr [ESP + 0x90],0x0
MOV EAX,dword ptr [ESP + 0x7c]
SETNZ BL
TEST EAX,EAX
JZ 0x0009cda0
TEST byte ptr [EAX + 0xc],0x28
MOV ECX,dword ptr [ESP + 0x70]
SETNZ AL
TEST ECX,ECX
MOVZX EAX,AL
MOV dword ptr [ESP + 0x48],EAX
JZ 0x0009d512
MOV EAX,dword ptr [ESP + 0x70]
TEST byte ptr [EAX + 0xc],0x28
SETNZ AL
MOVZX EAX,AL
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESP + 0x7c]
MOVZX ESI,word ptr [ESP + 0x94]
SUB ESP,0xc
MOV EAX,dword ptr [EAX]
MOV EBX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESP + 0x78]
ADD EAX,dword ptr [ESP + 0x40]
MOV EDX,EBX
MOV dword ptr [ESP + 0x68],EAX
MOV ECX,EAX
PUSH ESI
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00095030
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x7c]
TEST byte ptr [EAX + 0xb],0x1
JNZ 0x0009c771
MOV EAX,EBX
CALL 0x0001fe30
TEST EAX,EAX
JNZ 0x0009c753
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x0009bdd5
ADD EAX,dword ptr [ESP + 0x6c]
MOV EDX,ESI
MOV ECX,EAX
MOV EAX,EBX
CALL 0x0002e510
MOVZX EAX,byte ptr [EBX]
ADD ESI,dword ptr [ESP + 0x6c]
CMP AL,0xad
JZ 0x0009c74a
CMP AL,0xae
JZ 0x0009c720
CMP AL,0x88
JZ 0x0009d1f9
MOV EDX,dword ptr [ESP + 0x7c]
MOV EAX,EBP
MOV EBX,0x1
CALL 0x00020250
MOV ECX,ESI
MOV dword ptr [ESP + 0x5c],0x0
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV EAX,dword ptr [EAX + 0x8]
PUSH dword ptr [ESP + 0x74]
MOV EDX,dword ptr [ESP + 0x44]
CALL 0x00049800
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOVZX EAX,word ptr [EAX + 0x2a]
TEST AX,AX
JZ 0x0009be39
CMP EAX,ESI
JZ 0x0009be9b
MOV EAX,dword ptr [ESP + 0x8]
TEST byte ptr [EAX + 0x26],0x4
JZ 0x0009be5d
SUB ESP,0xc
MOV EDX,0x76
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x70]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
ADD EAX,EAX
LEA EBX,[EAX + EBX*0x4]
MOV EAX,dword ptr [ESP + 0x74]
ADD EBX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JNZ 0x0009cdec
MOV EAX,dword ptr [ESP + 0x28]
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESP + 0x3c]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x70]
MOVZX EDX,byte ptr [EAX + EBX*0x1 + 0xfffd276c]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00068470
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x70]
TEST EAX,EAX
JZ 0x0009c8ed
MOV ECX,dword ptr [ESP + 0x6c]
ADD ECX,dword ptr [ESP + 0x34]
SUB ESP,0xc
MOVZX ESI,word ptr [ESP + 0x8c]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x54],ECX
MOV EBX,dword ptr [EAX + 0x10]
PUSH ESI
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,EBX
CALL 0x00095030
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x70]
TEST byte ptr [EAX + 0xb],0x1
JNZ 0x0009d073
MOV EAX,EBX
CALL 0x0001fe30
TEST EAX,EAX
JZ 0x0009bf04
SUB ESP,0xc
MOV EDX,0x32
PUSH EDI
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x0009bf33
MOV ECX,EAX
MOV EDX,ESI
MOV EAX,EBX
CALL 0x0002e510
MOV ECX,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV EAX,dword ptr [ECX + 0x8]
PUSH dword ptr [ESP + 0x64]
MOV ECX,ESI
MOV EDX,dword ptr [ESP + 0x58]
CALL 0x00049800
ADD ESP,0x10
MOVZX EAX,byte ptr [EBX]
ADD ESI,dword ptr [ESP + 0x6c]
CMP AL,0xad
MOV dword ptr [ESP + 0x84],ESI
JNZ 0x0009bf49
MOVZX EAX,byte ptr [EBX + 0x2]
CMP AL,0xae
JZ 0x0009d03c
CMP AL,0x88
JZ 0x0009d1ec
MOV EDX,dword ptr [ESP + 0x70]
MOV EAX,EBP
CALL 0x00020250
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x0009bf77
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00023410
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x0009bf8a
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00023410
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x68]
MOV dword ptr [EBP + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0x84]
TEST EAX,EAX
JZ 0x0009c005
MOV EAX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JZ 0x0009bfcf
SUB ESP,0xc
MOV EDX,0x14
MOV ESI,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESI + 0x68]
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,0x3
PUSH EAX
MOV ECX,dword ptr [ESP + 0x84]
MOV EAX,ESI
CALL 0x00049630
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x54]
SUB ESP,0x4
LEA EAX,[EAX + ESI*0x2]
MOV ESI,dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x88]
PUSH dword ptr [ESP + 0x3c]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x70]
MOVZX EDX,byte ptr [ESI + EAX*0x1 + 0xfffd2768]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00068470
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JNZ 0x0009cb24
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x24]
TEST EAX,0x40000
JNZ 0x0009cafe
TEST AL,0x40
JZ 0x0009c83f
MOV EAX,dword ptr [ESP + 0x10]
TEST byte ptr [EAX + 0x28],0x20
JNZ 0x0009c83f
MOV ESI,0x1
MOV ECX,dword ptr [EBP]
TEST ECX,ECX
JNZ 0x0009c1eb
MOV EAX,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [EAX + 0x28]
TEST EDI,EDI
MOV dword ptr [ESP + 0x48],EDI
JZ 0x0009d29e
MOV EAX,dword ptr [EAX + 0xc]
XOR EDX,EDX
MOV dword ptr [ESP + 0x54],EAX
LEA EAX,[ESP + 0xac]
MOV dword ptr [ESP + 0x34],EAX
MOV EDI,dword ptr [ESP + 0x34]
XOR EAX,EAX
MOV dword ptr [EDI + EAX*0x1],EDX
ADD EAX,0x4
CMP EAX,0x18
JC 0x0009c076
LEA EAX,[ESP + 0xc8]
MOV dword ptr [ESP + 0xc4],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0xcc],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0xd0],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0xdc],EAX
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xe0],EAX
MOV EAX,dword ptr [ESP + 0x44]
MOVZX EDI,word ptr [EAX + 0x34]
TEST DI,DI
MOV word ptr [ESP + 0x20],DI
JZ 0x0009c1d7
MOV EBX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x68],EBP
XOR EDI,EDI
MOV dword ptr [ESP + 0x64],ESI
MOV EBP,EAX
LEA ECX,[EBX + 0xfff2cb10]
LEA EBX,[EBX + 0xfff24790]
MOV dword ptr [ESP + 0x58],ECX
MOV dword ptr [ESP + 0x5c],EBX
MOV EAX,dword ptr [EBP + 0x4]
MOVSX EBX,word ptr [EAX + EDI*0x2]
CMP BX,-0x2
JZ 0x0009ce98
TEST BX,BX
JS 0x0009c1bb
MOV EAX,dword ptr [ESP + 0x54]
LEA EDX,[EBX + EBX*0x4]
MOV EAX,dword ptr [EAX + 0x4]
LEA EAX,[EAX + EDX*0x4]
TEST byte ptr [EAX + 0x10],0x20
JZ 0x0009c1bb
MOV ESI,dword ptr [EAX + 0x8]
TEST ESI,ESI
JZ 0x0009c169
XOR EAX,EAX
MOV dword ptr [ESP + 0x6c],EBX
JMP 0x0009c14d
MOV EBX,dword ptr [ESP + 0x28]
MOVZX ECX,byte ptr [EBX + ECX*0x1 + 0xfffd66c0]
CMP byte ptr [EBX + EDX*0x1 + 0xfffd66c0],CL
JNZ 0x0009c1bb
ADD EAX,0x1
MOV ECX,dword ptr [ESP + 0x28]
MOVZX EDX,byte ptr [ESI + EAX*0x1]
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffd64f0]
CMP EDX,ECX
JNZ 0x0009c135
TEST EDX,EDX
JNZ 0x0009c14a
MOV EBX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0xd8],EBX
MOV dword ptr [ESP + 0xb0],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0xd4],EDI
MOV EDX,dword ptr [EAX + 0x10]
TEST EDX,EDX
JZ 0x0009c196
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x0004c8d0
MOV ESI,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESI + 0x8]
MOV EAX,EBX
CALL 0x0004c9a0
MOV EDX,dword ptr [ESI + 0xc]
MOV EAX,EBX
CALL 0x0004c9a0
MOVZX EAX,word ptr [EBP + 0x34]
MOV word ptr [ESP + 0x20],AX
MOVZX EAX,word ptr [ESP + 0x20]
ADD EDI,0x1
CMP EDI,EAX
JL 0x0009c0f5
MOV ESI,dword ptr [ESP + 0x64]
MOV EBP,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x24]
TEST EAX,EAX
JZ 0x0009c1eb
MOV ECX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00062f10
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x24]
TEST AH,0x10
JZ 0x0009c8d9
MOV byte ptr [EBP + 0x35],0xad
MOV EDI,dword ptr [ESP + 0x60]
MOV EDX,EAX
SHR EDX,0x10
AND EDX,0x1
TEST AL,0xf
MOV dword ptr [EBP + 0x38],EDI
MOV byte ptr [EBP + 0x36],DL
JNZ 0x0009c219
MOV byte ptr [EBP + 0x37],0x1
TEST ESI,ESI
JNZ 0x0009b1e0
MOV dword ptr [ESP + 0x8],0x1
JMP 0x0009b1f0
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x9c],ECX
CALL 0x000254e0
MOV ECX,dword ptr [ESP + 0x9c]
MOV dword ptr [ESP + 0x34],ECX
JMP 0x0009ae1c
XOR EAX,EAX
JMP 0x0009aaaf
MOV EAX,dword ptr [ESP + 0x1a0]
JMP 0x0009aaaf
MOV ECX,0xfffffffe
MOV EAX,0xffffffff
JMP 0x0009b651
MOV EAX,dword ptr [ESP + 0x8]
AND ECX,0x10
MOV EAX,dword ptr [EAX + 0x30]
MOV ESI,dword ptr [EAX]
JZ 0x0009c538
MOV EDX,0x4
MOV ECX,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EAX + EDX*0x1]
TEST ECX,ECX
JNZ 0x0009ce84
TEST ESI,ESI
JZ 0x0009d4f6
MOV EAX,EDI
MOV EDI,ESI
MOV ESI,EAX
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x178],0x18161719
MOV EDX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0x20],EAX
MOVZX EAX,byte ptr [EDX]
CMP AL,0xad
JNZ 0x0009c2c7
MOVZX EAX,byte ptr [EDX + 0x2]
CMP AL,0xae
JZ 0x0009cf92
CMP AL,0x88
JZ 0x0009d02f
MOV EAX,dword ptr [ESP + 0x14]
LEA ECX,[ESP + 0xe4]
CALL 0x000958f0
MOV EDX,EDI
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,EBP
CALL 0x00020250
MOV EAX,dword ptr [ESP + 0x20]
MOVZX EAX,byte ptr [EAX]
MOVZX EDX,byte ptr [ESP + EAX*0x1 + 0x142]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x10]
PUSH EBX
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000493f0
MOV EDX,dword ptr [ESP + 0xf4]
ADD ESP,0x10
TEST EDX,EDX
JZ 0x0009c32f
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x000254e0
TEST ESI,ESI
JZ 0x0009c91a
MOV EAX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESI]
SUB ESP,0xc
MOV ECX,dword ptr [EAX + 0x2c]
MOV EDX,dword ptr [EDI + 0x10]
ADD ECX,0x1
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [EAX + 0x2c],ECX
PUSH 0x1
CALL 0x00095030
MOV EAX,dword ptr [EDI + 0x10]
ADD ESP,0x10
MOVZX EDX,byte ptr [EAX]
CMP DL,0xad
JZ 0x0009d06a
CMP DL,0xae
JZ 0x0009ca5f
CMP DL,0x88
JZ 0x0009d1df
MOVZX ECX,byte ptr [EDI]
SUB ECX,0x36
AND ECX,0xfd
JNZ 0x0009ca6d
CMP dword ptr [ESP + 0x18],0x1
SBB EDI,EDI
AND EDI,0x2
ADD EDI,0x37
CMP DL,0xae
JZ 0x0009d057
CMP DL,0x88
JZ 0x0009d1d2
MOV EDX,ESI
MOV EAX,EBP
CALL 0x00020250
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0xc]
TEST EDX,EDX
MOV EAX,dword ptr [EAX + 0x68]
JZ 0x0009d2bd
MOV ESI,dword ptr [ESP + 0x38]
MOV byte ptr [EBP + 0x35],0x4
MOV dword ptr [EBP + 0x3c],EAX
MOV dword ptr [EBP + 0x38],ESI
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV EDX,0x7f
MOV ESI,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x24],ESI
ADD ESI,0x1
MOV dword ptr [EAX + 0x2c],ESI
PUSH ESI
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
POP EAX
POP EDX
PUSH ESI
PUSH EBX
MOV EDX,EDI
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,ESI
CALL 0x000493f0
MOV EAX,dword ptr [ESI + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x0009b1e0
MOV ECX,dword ptr [ESI + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV EBX,0x53
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
LEA EAX,[ECX + EAX*0x4]
MOV word ptr [EAX + -0x12],BX
JMP 0x0009b1f0
MOV EDI,dword ptr [EBP + 0x10]
JMP 0x0009bd2c
MOV byte ptr [ESP + 0x88],0x0
MOV dword ptr [ESP + 0x70],0x0
JMP 0x0009abe9
MOV EDX,ESI
XOR EBX,EBX
MOV dword ptr [ESP + 0x7c],0x0
JMP 0x0009ab99
JNZ 0x0009ac34
MOVZX ESI,byte ptr [ESP + 0x48]
AND ESI,0x1
MOV ECX,ESI
TEST CL,CL
JZ 0x0009ac34
MOVZX ECX,byte ptr [ESP + 0x88]
MOV ESI,dword ptr [ESP + 0x70]
MOVZX EDX,byte ptr [ESP + 0x94]
MOV byte ptr [ESP + 0x88],0x0
MOV byte ptr [ESP + 0x98],CL
MOV ECX,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0x7c],ESI
MOVZX ESI,word ptr [ESP + 0x80]
MOV word ptr [ESP + 0x80],DX
MOV dword ptr [ESP + 0x70],ECX
MOV word ptr [ESP + 0x94],SI
JMP 0x0009ac3c
MOV EAX,ESI
CALL 0x0001fe30
TEST EAX,EAX
JZ 0x0009ae3c
MOV EAX,dword ptr [ESP + 0x34]
SUB ESP,0xc
MOV EDX,0x32
LEA ECX,[EAX + EDI*0x1]
MOV EAX,dword ptr [ESP + 0x64]
PUSH dword ptr [EAX + 0xc]
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009ae3c
MOV byte ptr [EBP + 0x35],0xad
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
JMP 0x0009b1f0
MOV EAX,dword ptr [ESP + 0x8]
XOR EDX,EDX
XOR ESI,ESI
MOV EAX,dword ptr [EAX + 0x30]
JMP 0x0009c28b
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JZ 0x0009d105
MOV EDX,0x21
SUB ESP,0xc
PUSH dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009c32f
SUB ESP,0xc
MOV EDX,0x25
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x64]
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,EBX
CALL 0x00049630
MOV EDX,0xb
MOV EAX,EBX
XOR ECX,ECX
MOV dword ptr [ESP],0x0
CALL 0x00049630
ADD ESP,0x10
MOV EBX,EAX
MOV EDX,0x19
JMP 0x0009acdd
SUB EAX,dword ptr [ESP + 0x1a0]
MOV ESI,dword ptr [ESP + 0x20]
XOR ECX,ECX
LEA EBX,[EAX + -0x1]
MOV dword ptr [ESP + 0x44],EAX
IMUL EAX,EBX,0x44
ADD EAX,0x4c
TEST ESI,ESI
MOV EDX,EAX
JZ 0x0009d31b
CMP ECX,0x0
MOVZX ESI,word ptr [ESI + 0x114]
JA 0x0009d2e0
CMP EAX,ESI
JA 0x0009d2e0
CMP EAX,0x80
JA 0x0009d46c
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x138]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JZ 0x0009d4d0
MOV EAX,dword ptr [EAX]
ADD dword ptr [ESI + 0x120],0x1
MOV dword ptr [ESI + 0x138],EAX
IMUL EDX,dword ptr [ESP + 0x40],0x44
MOV ESI,dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [ESP + 0x8]
LEA EAX,[EBX + 0x1]
MOVZX EAX,AL
MOV dword ptr [EDI + 0x4],EAX
MOV dword ptr [EDI],EAX
LEA EAX,[EDI + 0x8]
LEA ESI,[ESI + EDX*0x1 + 0x8]
MOV EDX,dword ptr [ESI]
MOV dword ptr [EDI + 0x8],EDX
MOV EDX,dword ptr [ESI + 0x40]
MOV dword ptr [EAX + 0x40],EDX
MOV dword ptr [ESP + 0x8],EDI
ADD EDI,0xc
AND EDI,0xfffffffc
SUB EAX,EDI
SUB ESI,EAX
ADD EAX,0x44
SHR EAX,0x2
MOV ECX,EAX
MOVSD.REP ES:EDI,ESI
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x4]
ADD EAX,0x8
TEST EBX,EBX
MOV dword ptr [ESP + 0x18],EAX
JLE 0x0009b800
IMUL ECX,dword ptr [ESP + 0x44],0x44
MOV ESI,dword ptr [ESP + 0x8]
LEA EDX,[EBP + 0x88]
LEA EAX,[ESI + 0x4c]
LEA EBX,[ESI + ECX*0x1 + 0x8]
MOVZX ESI,byte ptr [EDX]
LEA EDI,[EAX + 0x4]
ADD EDX,0x54
AND EDI,0xfffffffc
IMUL ESI,ESI,0x44
ADD ESI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESI]
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [ESI + 0x40]
MOV dword ptr [EAX + 0x40],ECX
MOV ECX,EAX
ADD EAX,0x44
SUB ECX,EDI
SUB ESI,ECX
ADD ECX,0x44
SHR ECX,0x2
CMP EBX,EAX
MOVSD.REP ES:EDI,ESI
JNZ 0x0009c67c
JMP 0x0009b800
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x34]
SUB ESP,0xc
MOV ECX,0x1
MOV EDX,0x45
MOV dword ptr [ESI + 0x2c],EAX
MOV dword ptr [EBP + 0x2c],EAX
PUSH EAX
MOV EDI,dword ptr [ESP + 0x1c]
MOV EAX,EDI
CALL 0x00049630
MOV EAX,dword ptr [EDI + 0x68]
MOV dword ptr [EBP + 0x30],EAX
MOV EAX,dword ptr [EBP + 0x2c]
LEA EDX,[EAX + EAX*0x1]
MOV EAX,dword ptr [ESP + 0x54]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x6c]
MOV dword ptr [EBP + 0x2c],EDX
MOV EAX,dword ptr [EAX + 0x1c]
CMP byte ptr [EAX + EDI*0x1],0x1
SETZ AL
MOVZX EAX,AL
XOR EAX,dword ptr [ESP + 0x18]
OR EAX,EDX
MOV dword ptr [EBP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [EAX + 0x24]
MOV EAX,dword ptr [ESI + 0x2c]
LEA ESI,[EAX + 0x1]
MOV dword ptr [ESP + 0x34],ESI
JMP 0x0009abd5
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX]
CMP EAX,0x1
JLE 0x0009bdf4
MOV ECX,ESI
MOV dword ptr [ESP + 0x5c],0x0
MOV EBX,0x1
MOV dword ptr [ESP + 0x48],0x1
JMP 0x0009be0e
MOVZX EAX,byte ptr [EBX + 0x2]
JMP 0x0009bde4
SUB ESP,0xc
MOV EDX,0x32
PUSH EDI
MOV ECX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009bdbe
MOV ECX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ECX]
LEA EDX,[EDX + 0x15d0]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x0009c794
MOV EAX,dword ptr [ECX + 0x68]
LEA EDX,[EAX + EAX*0x4 + -0x5]
MOV EAX,dword ptr [ECX + 0x64]
LEA EDX,[EAX + EDX*0x4]
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,EAX
AND EAX,0x1
SHR ECX,0x1
MOV word ptr [EDX + 0x2],AX
MOV dword ptr [EDX + 0xc],ECX
JMP 0x0009bdaf
MOV ESI,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0x6c]
MOV EDX,dword ptr [ESI + 0x4]
MOVSX EDX,word ptr [EDX + EDI*0x2]
TEST EDX,EDX
JS 0x0009d4c0
MOV ESI,dword ptr [ESI + 0xc]
LEA EDX,[EDX + EDX*0x4]
MOV EDI,dword ptr [ESI + 0x4]
LEA EDX,[EDI + EDX*0x4]
CMP byte ptr [EDX + 0xc],0x0
SETZ byte ptr [ESP + 0x88]
JMP 0x0009abe9
MOV ESI,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x28]
MOV EBX,EAX
JMP 0x0009b454
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0xc]
TEST byte ptr [EAX + 0x24],0x80
JNZ 0x0009c940
MOV ESI,dword ptr [ESP + 0x10]
MOVZX EAX,word ptr [ESI + 0x28]
TEST AH,0x4
JNZ 0x0009cf32
TEST AH,0x10
JZ 0x0009c87f
CMP byte ptr [ESI + 0x2e],0x1
JZ 0x0009cf32
MOV EAX,dword ptr [ESP + 0x8]
CMP word ptr [EAX + 0x28],0x0
JZ 0x0009cf32
MOV EBX,dword ptr [ESI]
SUB ESP,0x8
MOV EDX,0x85
MOV EAX,dword ptr [EBX + 0x8]
OR byte ptr [ESI + 0x30],0x1
MOV dword ptr [ESP + 0x28],EAX
PUSH dword ptr [ESP + 0x40]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x70]
CALL 0x000493f0
ADD ESP,0x10
TEST byte ptr [ESI + 0x28],0x20
JZ 0x0009d3b8
MOV EAX,dword ptr [EBX + 0x74]
TEST EAX,EAX
CMOVZ EAX,EBX
MOV ESI,dword ptr [EAX + 0x50]
TEST ESI,ESI
JZ 0x0009d3bf
MOV EDX,dword ptr [EBP]
TEST EDX,EDX
JNZ 0x0009caf7
XOR ESI,ESI
MOV EAX,dword ptr [ESP + 0x44]
JMP 0x0009c1d7
MOV EDX,dword ptr [ESP + 0x18]
TEST EDX,EDX
SETZ DL
ADD EDX,0x4
MOV byte ptr [EBP + 0x35],DL
JMP 0x0009c1ff
CMP byte ptr [ESP + 0x98],0x0
JZ 0x0009bf64
MOV EAX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JZ 0x0009d38c
MOV EAX,dword ptr [ESP + 0x6c]
ADD EAX,0x1
MOV dword ptr [ESP + 0x84],EAX
JMP 0x0009bf64
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0xc]
TEST ECX,ECX
MOV EAX,dword ptr [EAX + 0x68]
JZ 0x0009bcbb
MOV byte ptr [EBP + 0x35],0x4
JMP 0x0009bcbf
MOV EDI,dword ptr [ESP + 0x60]
CMP dword ptr [ESP + 0x38],EDI
JZ 0x0009ca27
MOV EBX,dword ptr [EAX + 0x8]
TEST EBX,EBX
JNZ 0x0009c96b
JMP 0x0009ca50
MOV EBX,dword ptr [EBX + 0x14]
TEST EBX,EBX
JZ 0x0009ca50
MOVZX EAX,byte ptr [EBX + 0x37]
AND EAX,0x3
CMP AL,0x2
JNZ 0x0009c960
MOVZX EDX,word ptr [EBX + 0x32]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x00025510
CMP word ptr [EBX + 0x32],0x0
MOV dword ptr [ESP + 0x20],EAX
JZ 0x0009d465
MOV dword ptr [ESP + 0x34],EBP
MOV EBP,dword ptr [ESP + 0x44]
XOR EDI,EDI
MOVZX EDX,word ptr [EBP + 0x34]
MOV EAX,dword ptr [EBX + 0x4]
MOVZX ECX,word ptr [EAX + EDI*0x2]
TEST EDX,EDX
JZ 0x0009c9d1
MOV ESI,dword ptr [EBP + 0x4]
XOR EAX,EAX
CMP CX,word ptr [ESI]
JNZ 0x0009c9ca
JMP 0x0009c9d6
CMP CX,word ptr [ESI + EAX*0x2]
JZ 0x0009ca59
ADD EAX,0x1
CMP EAX,EDX
JNZ 0x0009c9c0
MOV EAX,0xffffffff
SUB ESP,0x8
MOV ESI,dword ptr [ESP + 0x28]
LEA EDX,[ESI + EDI*0x1]
ADD EDI,0x1
PUSH EDX
PUSH EAX
MOV EDX,0x59
MOV ECX,dword ptr [ESP + 0x70]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000493f0
MOVZX EAX,word ptr [EBX + 0x32]
ADD ESP,0x10
CMP EAX,EDI
JG 0x0009c99c
MOV EBP,dword ptr [ESP + 0x34]
SUB ESP,0x4
MOV EDX,0x1d
PUSH EAX
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00068470
ADD ESP,0x10
MOV ESI,dword ptr [EBP]
TEST ESI,ESI
JNZ 0x0009caf7
MOV EAX,dword ptr [ESP + 0x10]
TEST byte ptr [EAX + 0x28],0x20
JNZ 0x0009c8ce
JMP 0x0009c049
MOV EAX,dword ptr [ESP + 0x14]
ADD dword ptr [EAX + 0x28],0x1
MOVZX EAX,word ptr [0x00000032]
UD2
CWDE
JMP 0x0009c9d6
MOV ECX,dword ptr [EAX + 0x14]
MOV ECX,dword ptr [ECX]
CMP ECX,0x1
JLE 0x0009c37b
CMP dword ptr [ESP + 0x18],0x1
SBB EDI,EDI
AND EDI,0xfffffffe
ADD EDI,0x38
JMP 0x0009c39a
MOV EDX,dword ptr [EBP]
MOV EAX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x14]
TEST EDX,EDX
MOV dword ptr [ESI + 0x2c],EAX
MOV dword ptr [EBP + 0x24],EAX
JNZ 0x0009d246
MOV EDI,dword ptr [ESI + 0x38]
MOV byte ptr [ESP + 0x88],0x1
MOV EBX,0x1
LEA EDX,[EDI + -0x1]
MOV dword ptr [ESP + 0x54],EDI
MOV dword ptr [ESI + 0x38],EDX
MOV ESI,dword ptr [ESP + 0x34]
MOV dword ptr [EBP + 0x28],EDX
MOV dword ptr [ESP + 0x74],ESI
LEA ESI,[EAX + 0x1]
MOV dword ptr [ESP + 0x34],ESI
JMP 0x0009ac03
MOV EBX,dword ptr [ESP + 0x54]
MOV EDI,EAX
MOV dword ptr [ESP + 0x60],EAX
TEST byte ptr [EBX + 0x24],0x80
JZ 0x0009ba0b
MOVZX EAX,byte ptr [EAX + 0x37]
AND EAX,0x3
CMP AL,0x2
MOV EAX,0x0
CMOVNZ EAX,EDI
MOV dword ptr [ESP + 0x60],EAX
JMP 0x0009ba0b
XOR ESI,ESI
JMP 0x0009c1eb
SUB ESP,0xc
MOV EDX,0x76
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x70]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x24]
JMP 0x0009c023
SUB ESP,0xc
MOV EDX,0x12
MOV ESI,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESI + 0x68]
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,0x2
PUSH EAX
MOV ECX,dword ptr [ESP + 0x84]
MOV EAX,ESI
CALL 0x00049630
MOV EBX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x38]
ADD ESP,0xc
LEA EAX,[EBX + EAX*0x2]
MOVZX EDX,byte ptr [ECX + EAX*0x1 + 0xfffd2768]
MOV EAX,dword ptr [ESP + 0x88]
ADD EAX,EBX
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
MOV EAX,ESI
PUSH EDI
MOV ECX,dword ptr [ESP + 0x70]
CALL 0x00068470
ADD ESP,0x10
JMP 0x0009c011
MOV ESI,dword ptr [ESP + 0x14]
MOV EBP,dword ptr [ESP + 0x90]
MOV EAX,dword ptr [ESI + 0xd8]
TEST EAX,EAX
JZ 0x0009cbc9
MOV EBX,dword ptr [ESI + 0x8]
TEST EAX,EAX
JNS 0x0009cba7
MOV EAX,dword ptr [EBX + 0x68]
SUB EAX,0x1
MOV ECX,dword ptr [EBX]
MOV ESI,dword ptr [ESP + 0x28]
CMP byte ptr [ECX + 0x4d],0x0
LEA EDX,[ESI + 0x15d0]
JNZ 0x0009cbc2
LEA EDX,[EAX + EAX*0x4]
MOV EAX,dword ptr [EBX + 0x64]
LEA EDX,[EAX + EDX*0x4]
MOV EAX,dword ptr [EDX + 0x8]
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0xd8],EAX
MOV EAX,dword ptr [ESP + 0x60]
TEST EAX,EAX
MOV dword ptr [EBP + 0x40],EAX
JZ 0x0009cbe1
MOV EAX,dword ptr [ESP + 0x70]
MOV dword ptr [EBP + 0x8],EAX
MOV EDX,dword ptr [ESP + 0x68]
TEST EDX,EDX
JZ 0x0009cbf9
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EDX + 0xc],0x0
CALL 0x00053f30
MOV ESI,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8c]
MOV EDX,dword ptr [ESI + 0x68]
MOV ECX,dword ptr [ESI]
TEST EDI,EDI
LEA EAX,[EDX + -0x1]
CMOVNS EAX,EDI
CMP byte ptr [ECX + 0x4d],0x0
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x28]
LEA EAX,[EAX + 0x15d0]
JNZ 0x0009cc2c
MOV EAX,dword ptr [ESI + 0x64]
LEA ECX,[EDI + EDI*0x4]
LEA EAX,[EAX + ECX*0x4]
SUB ESP,0xc
MOV dword ptr [EAX + 0x4],EDX
PUSH dword ptr [EBP + 0xc]
MOV ESI,dword ptr [ESP + 0x1c]
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,ESI
CALL 0x00049630
MOV EDX,dword ptr [ESP + 0x98]
MOV EAX,ESI
CALL 0x000330b0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + 0x2c],0x1
JBE 0x0009cc75
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0009cc75
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00023410
MOV ESI,dword ptr [ESP + 0x48]
TEST ESI,ESI
JNZ 0x0009b1e0
MOV EDX,dword ptr [ESP + 0x74]
MOV EAX,EBP
CALL 0x00020250
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x8],0x2
JMP 0x0009b1f0
MOV EBX,dword ptr [EDX + 0x8]
TEST EBX,EBX
JNZ 0x0009ccbb
JMP 0x0009ca50
MOV EBX,dword ptr [EBX + 0x14]
TEST EBX,EBX
JZ 0x0009ca50
MOVZX EAX,byte ptr [EBX + 0x37]
AND EAX,0x3
CMP AL,0x2
JNZ 0x0009ccb0
MOVZX ECX,word ptr [EBX + 0x32]
MOV EAX,EBP
MOV EDX,ECX
MOV dword ptr [ESP + 0x58],ECX
CALL 0x00025510
MOV ECX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x6c],EAX
TEST ECX,ECX
JZ 0x0009cd35
ADD ECX,ECX
MOV dword ptr [ESP + 0x94],EDI
MOV dword ptr [ESP + 0x98],EBP
MOV dword ptr [ESP + 0x78],ECX
XOR ECX,ECX
MOV EBP,EAX
MOV EDI,ECX
MOV EAX,dword ptr [EBX + 0x4]
SUB ESP,0x8
PUSH EBP
ADD EBP,0x1
MOVSX EAX,word ptr [EAX + EDI*0x1]
ADD EDI,0x2
PUSH EAX
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,ESI
MOV EDX,dword ptr [ESP + 0x64]
CALL 0x00095620
ADD ESP,0x10
CMP dword ptr [ESP + 0x78],EDI
JNZ 0x0009ccfd
MOV EDI,dword ptr [ESP + 0x94]
MOV EBP,dword ptr [ESP + 0x98]
TEST EDI,EDI
JNZ 0x0009d12f
SUB ESP,0x8
MOV EDX,0x5b
MOV EAX,ESI
PUSH dword ptr [ESP + 0x64]
MOV EBX,dword ptr [ESP + 0x64]
PUSH EBX
MOV EDI,dword ptr [ESP + 0x7c]
MOV ECX,EDI
CALL 0x000493f0
ADD ESP,0xc
MOV EDX,0x82
MOV EAX,ESI
PUSH EBX
PUSH EDI
XOR EBX,EBX
PUSH dword ptr [ESP + 0x68]
MOV ECX,dword ptr [ESP + 0x74]
CALL 0x00068470
ADD ESP,0x10
CMP dword ptr [ESP + 0x58],0x1
JZ 0x0009d2ad
MOV EAX,dword ptr [ESP + 0x58]
CMP EAX,dword ptr [EBP + 0x1c]
JLE 0x0009bb63
MOV dword ptr [EBP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [EBP + 0x20],EAX
JMP 0x0009bb63
MOV ESI,dword ptr [ESP + 0x70]
TEST ESI,ESI
JNZ 0x0009d51f
MOVZX EBX,BL
MOV dword ptr [ESP + 0x54],0x1
CMP byte ptr [ESP + 0x88],0x0
JNZ 0x0009d0c5
MOV EDX,dword ptr [ESP + 0x74]
TEST EDX,EDX
JNZ 0x0009d206
MOV ESI,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x5c],0x0
MOV dword ptr [ESP + 0x48],0x1
MOV ECX,ESI
JMP 0x0009be0e
SUB ESP,0xc
MOV ECX,0x1
MOV EDX,0x45
PUSH dword ptr [ESP + 0x80]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x3c]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x70]
MOVZX EDX,byte ptr [EAX + EBX*0x1 + 0xfffd276c]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EAX,EBX
CALL 0x00068470
MOV EAX,dword ptr [EBX + 0x68]
XOR ECX,ECX
MOV EDX,0xb
MOV dword ptr [ESP + 0x74],EAX
ADD EAX,0x2
MOV dword ptr [ESP],EAX
MOV EAX,EBX
CALL 0x00049630
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0x1c]
XOR EAX,EAX
CMP ESI,0x2
MOV EDX,dword ptr [ESP + 0x2c]
SETGE AL
SUB ESI,dword ptr [ESP + 0x4c]
LEA EAX,[ECX + EAX*0x4 + 0x2]
MOVZX EDX,byte ptr [EDX + EAX*0x1 + 0xfffd276c]
MOV EAX,EBX
PUSH ESI
PUSH dword ptr [ESP + 0x3c]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x70]
CALL 0x00068470
ADD ESP,0x10
JMP 0x0009be9b
TEST EDI,EDI
JNZ 0x0009c2a8
JMP 0x0009c544
MOV ESI,dword ptr [ESP + 0x48]
MOV EAX,EDI
MOV ECX,0x1
SHL EAX,0x4
MOV EDX,dword ptr [ESI + EAX*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x5c]
MOV word ptr [ESP + 0xf8],CX
MOV dword ptr [ESP + 0xfc],0x0
MOV dword ptr [ESP + 0xe8],EAX
MOV EAX,dword ptr [ESP + 0x28]
TEST EDX,EDX
MOV dword ptr [ESP + 0xc8],EDX
LEA EAX,[EAX + 0xfff19e20]
MOV dword ptr [ESP + 0xec],EAX
JZ 0x0009c1bb
LEA EAX,[ESP + 0xe4]
CALL 0x0004c8d0
CMP word ptr [ESP + 0xf8],0x0
JNZ 0x0009c1b2
MOV EAX,dword ptr [ESP + 0x28]
LEA EAX,[EAX + 0xfff5b900]
MOV dword ptr [ESP + 0xb0],EAX
JMP 0x0009c17b
MOV dword ptr [EBP + 0x14],EAX
MOV EBX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x54]
LEA EDX,[EBX + 0x15d0]
MOV EAX,dword ptr [EAX + 0x68]
JMP 0x0009ad34
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV EDX,0x86
MOV ESI,dword ptr [EAX + 0x2c]
LEA EBX,[ESI + 0x1]
MOV dword ptr [ESP + 0x2c],ESI
MOV dword ptr [EAX + 0x2c],EBX
PUSH EBX
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x70]
MOV EAX,ESI
CALL 0x00049630
POP EDI
POP EAX
PUSH EBX
PUSH 0x0
MOV EDX,0x20
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,ESI
CALL 0x000493f0
ADD ESP,0x10
JMP 0x0009ca27
MOV EDX,dword ptr [ESP + 0x68]
ADD EDX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x000300b0
MOV dword ptr [ESP + 0x58],EAX
JMP 0x0009bd1d
MOV EAX,dword ptr [EDX + 0x14]
MOV EAX,dword ptr [EAX]
CMP EAX,0x1
JLE 0x0009c2d7
MOV EDI,dword ptr [ESP + 0x14]
MOVZX EAX,byte ptr [EDI + 0x13]
TEST AL,AL
JNZ 0x0009d116
MOV EAX,EDI
MOV EDI,dword ptr [EDI + 0x2c]
ADD EDI,0x1
MOV dword ptr [EAX + 0x2c],EDI
MOV dword ptr [ESP + 0x8],EDI
MOV EAX,EDI
MOV dword ptr [ESP + 0xe4],EAX
SUB ESP,0xc
MOV ECX,EAX
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00095030
MOV EAX,dword ptr [ESP + 0x30]
MOVZX EAX,byte ptr [EAX]
SUB EAX,0x37
AND EAX,0x2
OR EAX,0x1
MOVZX EDX,byte ptr [ESP + EAX*0x1 + 0x188]
ADD ESP,0x10
JMP 0x0009c303
MOV EAX,dword ptr [ESP + 0x44]
SUB ESP,0xc
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x18]
LEA ECX,[EAX + 0x2e8]
MOV EAX,EBP
CALL 0x0005ac00
ADD ESP,0x10
JMP 0x0009bae8
MOV dword ptr [ESP + 0x5c],0x0
MOV dword ptr [ESP + 0x64],0x0
JMP 0x0009b88e
MOV EAX,dword ptr [EDX + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX]
JMP 0x0009cf97
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX]
CMP EAX,0x1
JLE 0x0009bf59
MOV dword ptr [ESP + 0x54],0x1
JMP 0x0009bf64
MOV EAX,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX]
CMP EAX,0x1
JG 0x0009c3b5
JMP 0x0009c3ac
MOVZX EDX,byte ptr [EAX + 0x2]
JMP 0x0009c369
MOV ECX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ECX]
LEA EDX,[EDX + 0x15d0]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x0009d096
MOV EAX,dword ptr [ECX + 0x68]
LEA EDX,[EAX + EAX*0x4 + -0x5]
MOV EAX,dword ptr [ECX + 0x64]
LEA EDX,[EAX + EDX*0x4]
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,EAX
AND EAX,0x1
SHR ECX,0x1
MOV word ptr [EDX + 0x2],AX
MOV dword ptr [EDX + 0xc],ECX
JMP 0x0009bee0
MOV dword ptr [ESP + 0x68],0x0
JMP 0x0009b92d
XOR ESI,ESI
MOV EDX,0x21
JMP 0x0009c549
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x48
MOV ESI,dword ptr [ESP + 0x78]
MOV EAX,dword ptr [ESP + 0x40]
MOV EBX,0x1
ADD EAX,ESI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
MOV ECX,ESI
MOV dword ptr [ESP + 0x5c],0x1
LEA ESI,[ESI + 0x1]
MOV dword ptr [ESP + 0x48],0x0
JMP 0x0009be0e
TEST ESI,ESI
JZ 0x0009bc9a
MOV EDI,ESI
XOR ESI,ESI
JMP 0x0009c2a8
SUB EAX,0x1
MOV byte ptr [EDI + 0x13],AL
MOVZX EAX,AL
MOV EAX,dword ptr [EDI + EAX*0x4 + 0x98]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0009cfc1
SUB ESP,0x8
MOV EDX,0x1e
MOV EAX,ESI
PUSH dword ptr [ESP + 0x74]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x74]
CALL 0x000493f0
MOV EBX,EAX
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x0009d2d0
MOV EDX,dword ptr [ESI + 0x64]
LEA EAX,[EBX + EBX*0x4]
MOV ECX,dword ptr [ESP + 0x58]
TEST EDI,EDI
LEA EAX,[EDX + EAX*0x4]
MOV byte ptr [EAX + 0x1],0xfd
MOV dword ptr [EAX + 0x10],ECX
JS 0x0009cd79
PUSH EAX
PUSH EAX
MOV EDX,0x5b
PUSH dword ptr [ESP + 0x64]
PUSH dword ptr [ESP + 0x64]
MOV EAX,ESI
MOV EDI,dword ptr [ESP + 0x7c]
MOV ECX,EDI
CALL 0x000493f0
ADD ESP,0xc
MOV EDX,0x82
MOV EAX,ESI
PUSH dword ptr [ESP + 0x5c]
PUSH EDI
PUSH dword ptr [ESP + 0x68]
MOV ECX,dword ptr [ESP + 0x74]
CALL 0x00068470
MOV EAX,dword ptr [ESI + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x0009cd79
MOV EDI,dword ptr [ESI + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV EDX,0x10
LEA EAX,[EDI + EAX*0x4]
MOV word ptr [EAX + -0x12],DX
JMP 0x0009cd79
MOV EAX,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX]
JMP 0x0009d05c
MOV ECX,dword ptr [EAX + 0x14]
MOV ECX,dword ptr [ECX + 0x1c]
MOV ECX,dword ptr [ECX]
JMP 0x0009ca64
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX]
JMP 0x0009d041
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX]
JMP 0x0009c725
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x48
MOV ESI,dword ptr [ESP + 0x78]
MOV EAX,dword ptr [ESP + 0x40]
MOV EBX,0x1
ADD EAX,ESI
ADD ESI,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
MOV ECX,ESI
MOV dword ptr [ESP + 0x5c],0x0
MOV dword ptr [ESP + 0x48],0x1
JMP 0x0009be0e
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x45
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x2c]
JMP 0x0009ca98
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESI + 0xd8]
TEST EAX,EAX
MOV dword ptr [ESP + 0x48],EAX
JZ 0x0009d459
MOV EBX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x60],0x0
MOV dword ptr [ESP + 0x48],0x0
JMP 0x0009cb9d
TEST byte ptr [EAX + 0x38],0x4
JZ 0x0009c1d7
JMP 0x0009c05c
MOV EDX,dword ptr [ESP + 0x6c]
MOV EAX,EBP
CALL 0x00029ad0
JMP 0x0009bb63
MOV ESI,dword ptr [ESP + 0x38]
MOV byte ptr [EBP + 0x35],0x5
MOV dword ptr [EBP + 0x3c],EAX
MOV dword ptr [EBP + 0x38],ESI
JMP 0x0009c3d6
TEST EDI,EDI
JS 0x0009cd79
JMP 0x0009d175
MOV EAX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [EAX + 0x110]
TEST EDI,EDI
JNZ 0x0009d496
ADD dword ptr [EAX + 0x124],0x1
CALL 0x0002eee0
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0009c60e
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x30]
JMP 0x0009b549
MOV ESI,EAX
MOV EDI,ECX
ADD ESI,-0x1
ADC EDI,-0x1
CMP EDI,0x0
JA 0x0009d30e
CMP ESI,0x7ffffefe
JA 0x0009d30e
MOV ESI,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESI + 0x360]
TEST ESI,ESI
JNZ 0x0009d502
SUB ESP,0xc
PUSH EAX
MOV EAX,dword ptr [ESP + 0x38]
CALL dword ptr [EAX + 0x380]
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
JMP 0x0009d302
MOV ESI,dword ptr [ESP + 0x14]
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x48
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [ESP + 0x24],EAX
ADD EAX,0x1
MOV dword ptr [ESP + 0x70],EAX
MOV dword ptr [ESI + 0x2c],EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
JMP 0x0009b879
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x48
MOV EAX,dword ptr [ESP + 0x78]
ADD EAX,dword ptr [ESP + 0x40]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
MOV dword ptr [ESP + 0x54],0x0
JMP 0x0009c907
XOR ESI,ESI
JMP 0x0009c03e
MOV EAX,dword ptr [ESP + 0x44]
XOR ECX,ECX
MOV ESI,dword ptr [EAX + 0xc]
MOVSX EAX,word ptr [ESI + 0x2a]
LEA EDX,[EAX*0x4 + 0x4]
MOV EAX,dword ptr [EBX]
CALL 0x0004e890
TEST EAX,EAX
MOV EDI,EAX
JZ 0x0009ca27
MOVSX EAX,word ptr [ESI + 0x2a]
MOV EBX,dword ptr [ESP + 0x44]
MOV dword ptr [EDI],EAX
MOVZX EAX,word ptr [EBX + 0x34]
CMP AX,0x1
JBE 0x0009d43c
SUB EAX,0x1
MOV ECX,dword ptr [EBX + 0x4]
XOR EBX,EBX
MOV dword ptr [ESP + 0x34],EAX
JMP 0x0009d416
TEST AX,AX
JS 0x0009d410
CWDE
MOV dword ptr [EDI + EAX*0x4 + 0x4],EBX
CMP dword ptr [ESP + 0x34],EBX
JZ 0x0009d43c
MOVZX EAX,word ptr [ECX + EBX*0x2]
ADD EBX,0x1
TEST byte ptr [ESI + 0x24],0x20
JZ 0x0009d406
TEST AX,AX
JS 0x0009d410
MOVSX EDX,AX
MOV EAX,ESI
MOV dword ptr [ESP + 0x48],ECX
CALL 0x00025700
MOV ECX,dword ptr [ESP + 0x48]
JMP 0x0009d40b
SUB ESP,0xc
MOV ECX,EDI
MOV EDX,0xffffffff
PUSH -0xf
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x000436c0
ADD ESP,0x10
JMP 0x0009ca27
MOV dword ptr [EBP + 0x40],0x0
JMP 0x0009cbe1
XOR EAX,EAX
JMP 0x0009ca06
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x130]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JZ 0x0009d53e
MOV EAX,dword ptr [EAX]
ADD dword ptr [ESI + 0x120],0x1
MOV dword ptr [ESI + 0x130],EAX
JMP 0x0009c60e
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x0009d2f9
JMP 0x0009d30e
MOVZX EAX,word ptr [EBP + 0x1e]
BT EAX,EBX
JC 0x0009b18a
JMP 0x0009b046
CMP EDX,-0x2
SETZ byte ptr [ESP + 0x88]
JMP 0x0009abe9
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x134]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JZ 0x0009d46c
MOV EAX,dword ptr [EAX]
ADD dword ptr [ESI + 0x120],0x1
MOV dword ptr [ESI + 0x134],EAX
JMP 0x0009c60e
MOV ESI,EDI
MOV EDX,0x25
JMP 0x0009c549
MOV EDX,ECX
CALL 0x000280e0
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0009d302
MOV dword ptr [ESP + 0x54],0x1
JMP 0x0009bd70
MOV EAX,dword ptr [ESP + 0x70]
MOVZX EBX,BL
TEST byte ptr [EAX + 0xc],0x28
SETNZ AL
MOVZX EAX,AL
MOV dword ptr [ESP + 0x54],EAX
JMP 0x0009cdb7
CALL 0x000d1450
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x12c]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JZ 0x0009d564
MOV EAX,dword ptr [EAX]
ADD dword ptr [ESI + 0x120],0x1
MOV dword ptr [ESI + 0x12c],EAX
JMP 0x0009c60e
MOV EAX,dword ptr [ESP + 0x20]
ADD dword ptr [EAX + 0x128],0x1
JMP 0x0009d2f9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n\nundefined8 __regparm3\nFUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)\n\n{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}\n\n" comment comment (function_definition "undefined8 __regparm3\nFUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)\n\n{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" ( (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 "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "short sVar17;" (sized_type_specifier "short" short) identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "ushort uVar32;" type_identifier identifier ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "byte *pbVar36;" type_identifier (pointer_declarator "*pbVar36" * identifier) ;) (declaration "uint uVar37;" type_identifier identifier ;) (declaration "uint uVar38;" type_identifier identifier ;) (declaration "undefined4 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "int iVar41;" primitive_type identifier ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "int iVar43;" primitive_type identifier ;) (declaration "uint *puVar44;" type_identifier (pointer_declarator "*puVar44" * identifier) ;) (declaration "uint uVar45;" type_identifier identifier ;) (declaration "int iVar46;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar47;" primitive_type identifier ;) (declaration "bool bVar48;" primitive_type identifier ;) (declaration "uint *local_194;" type_identifier (pointer_declarator "*local_194" * identifier) ;) (declaration "int local_184;" primitive_type identifier ;) (declaration "uint local_17c;" type_identifier identifier ;) (declaration "int local_168;" primitive_type identifier ;) (declaration "int local_158;" primitive_type identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "int local_144;" primitive_type identifier ;) (declaration "int local_140;" primitive_type identifier ;) (declaration "int local_13c;" primitive_type identifier ;) (declaration "int local_134;" primitive_type identifier ;) (declaration "int *local_12c;" primitive_type (pointer_declarator "*local_12c" * identifier) ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int *local_120;" primitive_type (pointer_declarator "*local_120" * identifier) ;) (declaration "uint local_118;" type_identifier identifier ;) (declaration "code *local_f0 [6];" type_identifier (pointer_declarator "*local_f0 [6]" * (array_declarator "local_f0 [6]" identifier [ number_literal ])) ;) (declaration "int *local_d8;" primitive_type (pointer_declarator "*local_d8" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "int local_d0;" primitive_type identifier ;) (declaration "int local_cc;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int *local_c0;" primitive_type (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "code *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "code *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int *local_a0;" primitive_type (pointer_declarator "*local_a0" * identifier) ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined2 local_74;" type_identifier identifier ;) (declaration "undefined1 local_72;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined2 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x9a949;" (assignment_expression "uStack_14 = 0x9a949" identifier = number_literal) ;) (expression_statement "iVar41 = *param_1;" (assignment_expression "iVar41 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar42 = param_5[0x12];" (assignment_expression "iVar42 = param_5[0x12]" identifier = (subscript_expression "param_5[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = (uint)*(byte *)(param_5 + 0xd);" (assignment_expression "uVar18 = (uint)*(byte *)(param_5 + 0xd)" identifier = (binary_expression "(uint)*(byte *)(param_5 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xd)" ( (binary_expression "param_5 + 0xd" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = param_3 + 0x12;" (assignment_expression "piVar1 = param_3 + 0x12" identifier = (binary_expression "param_3 + 0x12" identifier + number_literal)) ;) (expression_statement "iVar8 = param_3[1];" (assignment_expression "iVar8 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);" (assignment_expression "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44)" identifier = (pointer_expression "*(int *)(iVar8 + 0x30 + uVar18 * 0x44)" * (cast_expression "(int *)(iVar8 + 0x30 + uVar18 * 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x30 + uVar18 * 0x44" (binary_expression "iVar8 + 0x30" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) ))))) ;) (expression_statement "uVar35 = param_7;" (assignment_expression "uVar35 = param_7" identifier = identifier) ;) (expression_statement "uVar45 = param_6;" (assignment_expression "uVar45 = param_6" identifier = identifier) ;) (if_statement "if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" if (parenthesized_expression "(0 < param_3[0x79])" ( (binary_expression "0 < param_3[0x79]" number_literal < (subscript_expression "param_3[0x79]" identifier [ number_literal ])) )) (compound_statement "{\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" { (if_statement "if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" if (parenthesized_expression "(param_3[0x7a] == iVar9)" ( (binary_expression "param_3[0x7a] == iVar9" (subscript_expression "param_3[0x7a]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }" { (expression_statement "uVar45 = 0xfffffffe;" (assignment_expression "uVar45 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" else (compound_statement "{\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);" do (compound_statement "{\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      }" { (expression_statement "uVar33 = uVar19 + 1;" (assignment_expression "uVar33 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (if_statement "if (param_3[0x79] == uVar33) goto LAB_0009a9fc;" if (parenthesized_expression "(param_3[0x79] == uVar33)" ( (binary_expression "param_3[0x79] == uVar33" (subscript_expression "param_3[0x79]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_0009a9fc;" goto statement_identifier ;)) (expression_statement "iVar20 = uVar19 + 0x7b;" (assignment_expression "iVar20 = uVar19 + 0x7b" identifier = (binary_expression "uVar19 + 0x7b" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar33;" (assignment_expression "uVar19 = uVar33" identifier = identifier) ;) }) while (parenthesized_expression "(iVar9 != param_3[iVar20])" ( (binary_expression "iVar9 != param_3[iVar20]" identifier != (subscript_expression "param_3[iVar20]" identifier [ identifier ])) )) ;) (expression_statement "bVar48 = (uVar33 & 0x20) == 0;" (assignment_expression "bVar48 = (uVar33 & 0x20) == 0" identifier = (binary_expression "(uVar33 & 0x20) == 0" (parenthesized_expression "(uVar33 & 0x20)" ( (binary_expression "uVar33 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f))" identifier = (unary_expression "~((uint)bVar48 << ((byte)uVar33 & 0x1f))" ~ (parenthesized_expression "((uint)bVar48 << ((byte)uVar33 & 0x1f))" ( (binary_expression "(uint)bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)bVar48" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" identifier = (unary_expression "~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" ~ (parenthesized_expression "((uint)!bVar48 << ((byte)uVar33 & 0x1f))" ( (binary_expression "(uint)!bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)!bVar48" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar48" ! identifier)) << (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) }))) (expression_statement "uVar35 = uVar35 & param_7;" (assignment_expression "uVar35 = uVar35 & param_7" identifier = (binary_expression "uVar35 & param_7" identifier & identifier)) ;) (expression_statement "uVar45 = uVar45 & param_6;" (assignment_expression "uVar45 = uVar45 & param_6" identifier = (binary_expression "uVar45 & param_6" identifier & identifier)) ;) })) (labeled_statement "LAB_0009a9fc:\n  param_5[0x14] = uVar35;" statement_identifier : (expression_statement "param_5[0x14] = uVar35;" (assignment_expression "param_5[0x14] = uVar35" (subscript_expression "param_5[0x14]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_5[0x13] = uVar45;" (assignment_expression "param_5[0x13] = uVar45" (subscript_expression "param_5[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar35 = param_3[0x11];" (assignment_expression "uVar35 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "uVar45 = param_3[0x10];" (assignment_expression "uVar45 = param_3[0x10]" identifier = (subscript_expression "param_3[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar20 = param_1[0xe] + -1;" (assignment_expression "iVar20 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar20;" (assignment_expression "param_1[0xe] = iVar20" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = iVar20;" (assignment_expression "param_5[4] = iVar20" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = iVar20;" (assignment_expression "param_5[3] = iVar20" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar40 = param_1[0xe] + -1;" (assignment_expression "iVar40 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar40;" (assignment_expression "param_1[0xe] = iVar40" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = iVar40;" (assignment_expression "param_5[6] = iVar40" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" if (parenthesized_expression "(((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0))" ( (binary_expression "((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" (parenthesized_expression "((char)param_5[0xd] != '\0')" ( (binary_expression "(char)param_5[0xd] != '\0'" (cast_expression "(char)param_5[0xd]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_5[0xd]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8" (pointer_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" * (cast_expression "(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x2c + uVar18 * 0x44" (binary_expression "iVar8 + 0x2c" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" { (expression_statement "iVar34 = param_1[0xb] + 1;" (assignment_expression "iVar34 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar34;" (assignment_expression "param_1[0xb] = iVar34" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_5 = iVar34;" (assignment_expression "*param_5 = iVar34" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar19 = 0;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" else (compound_statement "{\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" { (expression_statement "uVar19 = param_4;" (assignment_expression "uVar19 = param_4" identifier = identifier) ;) (if_statement "if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" if (parenthesized_expression "(param_3[param_4 * 0x15 + 0xba] == 0)" ( (binary_expression "param_3[param_4 * 0x15 + 0xba] == 0" (subscript_expression "param_3[param_4 * 0x15 + 0xba]" identifier [ (binary_expression "param_4 * 0x15 + 0xba" (binary_expression "param_4 * 0x15" identifier * number_literal) + number_literal) ]) == number_literal) )) (compound_statement "{\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" { (expression_statement "piVar31 = param_3 + param_4 * 0x15 + 0xa5;" (assignment_expression "piVar31 = param_3 + param_4 * 0x15 + 0xa5" identifier = (binary_expression "param_3 + param_4 * 0x15 + 0xa5" (binary_expression "param_3 + param_4 * 0x15" identifier + (binary_expression "param_4 * 0x15" identifier * number_literal)) + number_literal)) ;) (do_statement "do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);" do (compound_statement "{\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      }" { (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar34 = *piVar31;" (assignment_expression "iVar34 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "piVar31 = piVar31 + -0x15;" (assignment_expression "piVar31 = piVar31 + -0x15" identifier = (binary_expression "piVar31 + -0x15" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) ;) })) }))) (expression_statement "iVar34 = uVar18 * 0x44 + iVar8;" (assignment_expression "iVar34 = uVar18 * 0x44 + iVar8" identifier = (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "bVar4 = *(byte *)(iVar34 + 0x2d);" (assignment_expression "bVar4 = *(byte *)(iVar34 + 0x2d)" identifier = (pointer_expression "*(byte *)(iVar34 + 0x2d)" * (cast_expression "(byte *)(iVar34 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x2d)" ( (binary_expression "iVar34 + 0x2d" identifier + number_literal) ))))) ;) (if_statement "if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" if (parenthesized_expression "((bVar4 & 0x10) == 0)" ( (binary_expression "(bVar4 & 0x10) == 0" (parenthesized_expression "(bVar4 & 0x10)" ( (binary_expression "bVar4 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" { (expression_statement "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" identifier = (binary_expression "uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" (binary_expression "uVar45 >> ((byte)param_4 & 0x1f)" identifier >> (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "uVar35 << 0x20 - ((byte)param_4 & 0x1f)" identifier << (binary_expression "0x20 - ((byte)param_4 & 0x1f)" number_literal - (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) (if_statement "if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" if (parenthesized_expression "((param_4 & 0x20) != 0)" ( (binary_expression "(param_4 & 0x20) != 0" (parenthesized_expression "(param_4 & 0x20)" ( (binary_expression "param_4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" { (expression_statement "uVar45 = uVar35 >> ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar35 >> ((byte)param_4 & 0x1f)" identifier = (binary_expression "uVar35 >> ((byte)param_4 & 0x1f)" identifier >> (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "uVar33 = uVar45 & 1;" (assignment_expression "uVar33 = uVar45 & 1" identifier = (binary_expression "uVar45 & 1" identifier & number_literal)) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" if (parenthesized_expression "((uVar35 & 0x400) == 0)" ( (binary_expression "(uVar35 & 0x400) == 0" (parenthesized_expression "(uVar35 & 0x400)" ( (binary_expression "uVar35 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }" { (if_statement "if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" if (parenthesized_expression "(((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0))" ( (binary_expression "((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)" (parenthesized_expression "((uVar35 & 0x100) == 0)" ( (binary_expression "(uVar35 & 0x100) == 0" (parenthesized_expression "(uVar35 & 0x100)" ( (binary_expression "uVar35 & 0x100" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar35 & 5) == 0)" ( (binary_expression "(uVar35 & 5) == 0" (parenthesized_expression "(uVar35 & 5)" ( (binary_expression "uVar35 & 5" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }" { (expression_statement "iVar34 = param_3[uVar19 * 0x15 + 0xbd];" (assignment_expression "iVar34 = param_3[uVar19 * 0x15 + 0xbd]" identifier = (subscript_expression "param_3[uVar19 * 0x15 + 0xbd]" identifier [ (binary_expression "uVar19 * 0x15 + 0xbd" (binary_expression "uVar19 * 0x15" identifier * number_literal) + number_literal) ])) ;) (if_statement "if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "((uVar35 & 0x102) == 0x102)" ( (binary_expression "(uVar35 & 0x102) == 0x102" (parenthesized_expression "(uVar35 & 0x102)" ( (binary_expression "uVar35 & 0x102" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" { (if_statement "if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\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            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }" { (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" identifier = (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "piVar31 = (int *)*piVar24;" (assignment_expression "piVar31 = (int *)*piVar24" identifier = (cast_expression "(int *)*piVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar24" * identifier))) ;) (if_statement "if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" if (parenthesized_expression "((uVar35 & 0x10) != 0)" ( (binary_expression "(uVar35 & 0x10) != 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" { (expression_statement "iVar41 = 4;" (assignment_expression "iVar41 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0009c28b;" goto statement_identifier ;) })) (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" identifier = identifier) ;) (if_statement "if (uVar33 != 0) goto LAB_0009c549;" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;)) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009bc9a;" if (parenthesized_expression "(piVar31 == (int *)0x0)" ( (binary_expression "piVar31 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009bc9a;" goto statement_identifier ;)) (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009c2a8;" goto statement_identifier ;) })) (if_statement "if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" if (parenthesized_expression "((uVar35 & 0x10) == 0)" ( (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }" { (if_statement "if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" { (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;) })) (labeled_statement "LAB_0009bc9a:\n            FUN_00049630(iVar34);" statement_identifier : (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;)) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;" statement_identifier : (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) }) (else_clause "else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" else (compound_statement "{\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" { (expression_statement "iVar41 = 0;" (assignment_expression "iVar41 = 0" identifier = number_literal) ;) (expression_statement "piVar31 = (int *)0x0;" (assignment_expression "piVar31 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" identifier = (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);" statement_identifier : (expression_statement "piVar11 = *(int **)((int)piVar24 + iVar41);" (assignment_expression "piVar11 = *(int **)((int)piVar24 + iVar41)" identifier = (pointer_expression "*(int **)((int)piVar24 + iVar41)" * (cast_expression "(int **)((int)piVar24 + iVar41)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + iVar41)" ( (binary_expression "(int)piVar24 + iVar41" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;)) (if_statement "if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }" { (expression_statement "piVar24 = piVar11;" (assignment_expression "piVar24 = piVar11" identifier = identifier) ;) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009c549;" if (parenthesized_expression "(piVar31 == (int *)0x0)" ( (binary_expression "piVar31 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;)) (labeled_statement "LAB_0009c2a8:\n              local_24 = 0x18161719;" statement_identifier : (expression_statement "local_24 = 0x18161719;" (assignment_expression "local_24 = 0x18161719" identifier = number_literal) ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" identifier = (pointer_expression "*(char **)(*piVar31 + 0x10)" * (cast_expression "(char **)(*piVar31 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0x10)" ( (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }" { (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;" statement_identifier : (if_statement "if (iVar41 < 2) goto LAB_0009c2d7;" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c2d7;" goto statement_identifier ;))) (if_statement "if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x13) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x13)" * (cast_expression "(char *)((int)param_1 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }" { (expression_statement "local_194 = (uint *)(param_1[0xb] + 1);" (assignment_expression "local_194 = (uint *)(param_1[0xb] + 1)" identifier = (cast_expression "(uint *)(param_1[0xb] + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0xb] + 1)" ( (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "param_1[0xb] = (int)local_194;" (assignment_expression "param_1[0xb] = (int)local_194" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" else (compound_statement "{\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" { (expression_statement "bVar16 = *(char *)((int)param_1 + 0x13) - 1;" (assignment_expression "bVar16 = *(char *)((int)param_1 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)param_1 + 0x13) - 1" (pointer_expression "*(char *)((int)param_1 + 0x13)" * (cast_expression "(char *)((int)param_1 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 0x13) = bVar16;" (assignment_expression "*(byte *)((int)param_1 + 0x13) = bVar16" (pointer_expression "*(byte *)((int)param_1 + 0x13)" * (cast_expression "(byte *)((int)param_1 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_194 = (uint *)param_1[bVar16 + 0x26];" (assignment_expression "local_194 = (uint *)param_1[bVar16 + 0x26]" identifier = (cast_expression "(uint *)param_1[bVar16 + 0x26]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[bVar16 + 0x26]" identifier [ (binary_expression "bVar16 + 0x26" identifier + number_literal) ]))) ;) }))) (expression_statement "local_b8 = (int)local_194;" (assignment_expression "local_b8 = (int)local_194" identifier = (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" else (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" { (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" { (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009cf97;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();" statement_identifier : (expression_statement "local_194 = (uint *)FUN_000958f0();" (assignment_expression "local_194 = (uint *)FUN_000958f0()" identifier = (cast_expression "(uint *)FUN_000958f0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000958f0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "FUN_000493f0(iVar20,local_194);" (call_expression "FUN_000493f0(iVar20,local_194)" identifier (argument_list "(iVar20,local_194)" ( identifier , identifier ))) ;) (if_statement "if (local_b8 != 0) {\n                FUN_000254e0();\n              }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_000254e0();\n              }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" else (compound_statement "{\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" { (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" identifier = identifier) ;) (expression_statement "piVar31 = piVar11;" (assignment_expression "piVar31 = piVar11" identifier = identifier) ;) (if_statement "if (piVar11 != (int *)0x0) goto LAB_0009c2a8;" if (parenthesized_expression "(piVar11 != (int *)0x0)" ( (binary_expression "piVar11 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009c2a8;" goto statement_identifier ;)) (labeled_statement "LAB_0009c549:\n              FUN_00049630(iVar34);" statement_identifier : (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;)) }))) (if_statement "if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" if (parenthesized_expression "(piVar24 != (int *)0x0)" ( (binary_expression "piVar24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" { (expression_statement "iVar41 = *piVar24;" (assignment_expression "iVar41 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + 1;" (assignment_expression "param_1[0xb] = param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pcVar10 = *(char **)(iVar41 + 0x10);" (assignment_expression "pcVar10 = *(char **)(iVar41 + 0x10)" identifier = (pointer_expression "*(char **)(iVar41 + 0x10)" * (cast_expression "(char **)(iVar41 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x10)" ( (binary_expression "iVar41 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }" { (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;" statement_identifier : (if_statement "if (iVar41 < 2) goto LAB_0009c3ac;" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c3ac;" goto statement_identifier ;))) }) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" else (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" { (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" { (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009d05c;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c3ac:\n                FUN_00020250();" statement_identifier : (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;)) }))) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" else (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "iVar41 = param_1[0xb] + 1;" (assignment_expression "iVar41 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar41;" (assignment_expression "param_1[0xb] = iVar41" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(iVar41);" (call_expression "FUN_00049630(iVar41)" identifier (argument_list "(iVar41)" ( identifier ))) ;) (expression_statement "FUN_000493f0(iVar20,iVar41);" (call_expression "FUN_000493f0(iVar20,iVar41)" identifier (argument_list "(iVar20,iVar41)" ( identifier , identifier ))) ;) (if_statement "if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" if (parenthesized_expression "(0 < param_2[0x1a])" ( (binary_expression "0 < param_2[0x1a]" number_literal < (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" { (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar33 == 0) goto LAB_0009bcbb;" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009bcbb;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (if_statement "if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" if (parenthesized_expression "((uVar35 & 0x200) == 0)" ( (binary_expression "(uVar35 & 0x200) == 0" (parenthesized_expression "(uVar35 & 0x200)" ( (binary_expression "uVar35 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" { (if_statement "if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" if (parenthesized_expression "((uVar35 & 0x2000) == 0)" ( (binary_expression "(uVar35 & 0x2000) == 0" (parenthesized_expression "(uVar35 & 0x2000)" ( (binary_expression "uVar35 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" { (if_statement "if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" if (parenthesized_expression "((bVar4 & 0x20) == 0)" ( (binary_expression "(bVar4 & 0x20) == 0" (parenthesized_expression "(bVar4 & 0x20)" ( (binary_expression "bVar4 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" { (expression_statement "uVar5 = (&DAT_000d8764)[uVar33];" (assignment_expression "uVar5 = (&DAT_000d8764)[uVar33]" identifier = (subscript_expression "(&DAT_000d8764)[uVar33]" (parenthesized_expression "(&DAT_000d8764)" ( (pointer_expression "&DAT_000d8764" & identifier) )) [ identifier ])) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = uVar5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = uVar5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar41 = FUN_00049630(iVar34);" (assignment_expression "iVar41 = FUN_00049630(iVar34)" identifier = (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier )))) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" * (cast_expression "(undefined1 *)((int)param_5 + 0x37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x37)" ( (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41 + 1;" (assignment_expression "param_5[0xf] = iVar41 + 1" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (binary_expression "iVar41 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (expression_statement "iVar20 = param_1[10];" (assignment_expression "iVar20 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = iVar20 + 1;" (assignment_expression "param_1[10] = iVar20 + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar21 = param_1[0xb] + 1;" (assignment_expression "iVar21 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar22 = param_1[0xe] + -1;" (assignment_expression "iVar22 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar21;" (assignment_expression "param_1[0xb] = iVar21" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xe] = iVar22;" (assignment_expression "param_1[0xe] = iVar22" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);" (assignment_expression "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44)" identifier = (pointer_expression "*(int *)(iVar8 + 0x18 + uVar18 * 0x44)" * (cast_expression "(int *)(iVar8 + 0x18 + uVar18 * 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x18 + uVar18 * 0x44" (binary_expression "iVar8 + 0x18" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) ))))) ;) (expression_statement "piVar31 = (int *)**(int **)(iVar42 + 0x30);" (assignment_expression "piVar31 = (int *)**(int **)(iVar42 + 0x30)" identifier = (cast_expression "(int *)**(int **)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(iVar42 + 0x30)" * (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))))) ;) (expression_statement "iVar42 = piVar31[7];" (assignment_expression "iVar42 = piVar31[7]" identifier = (subscript_expression "piVar31[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0x41;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0x41" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xe] = iVar21;" (assignment_expression "param_5[0xe] = iVar21" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" if (parenthesized_expression "(*(byte *)(param_3 + 0xb) < 2)" ( (binary_expression "*(byte *)(param_3 + 0xb) < 2" (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n            local_194 = (uint *)param_3[1];\n          }" { (expression_statement "local_194 = (uint *)param_3[1];" (assignment_expression "local_194 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" else (compound_statement "{\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" { (expression_statement "param_4 = *(byte *)(param_3 + 0xb) - param_4;" (assignment_expression "param_4 = *(byte *)(param_3 + 0xb) - param_4" identifier = (binary_expression "*(byte *)(param_3 + 0xb) - param_4" (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) )))) - identifier)) ;) (expression_statement "iVar43 = (param_4 - 1) * 0x44;" (assignment_expression "iVar43 = (param_4 - 1) * 0x44" identifier = (binary_expression "(param_4 - 1) * 0x44" (parenthesized_expression "(param_4 - 1)" ( (binary_expression "param_4 - 1" identifier - number_literal) )) * number_literal)) ;) (expression_statement "uVar35 = iVar43 + 0x4c;" (assignment_expression "uVar35 = iVar43 + 0x4c" identifier = (binary_expression "iVar43 + 0x4c" identifier + number_literal)) ;) (if_statement "if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" if (parenthesized_expression "(iVar41 == 0)" ( (binary_expression "iVar41 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }" { (if_statement "if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;" if (parenthesized_expression "((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU))" ( (binary_expression "(uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)" (parenthesized_expression "(uVar35 == 0)" ( (binary_expression "uVar35 == 0" identifier == number_literal) )) || (parenthesized_expression "(0x7ffffefe < iVar43 + 0x4bU)" ( (binary_expression "0x7ffffefe < iVar43 + 0x4bU" number_literal < (binary_expression "iVar43 + 0x4bU" identifier + number_literal)) ))) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;)) (if_statement "if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }" if (parenthesized_expression "(DAT_00106360 == 0)" ( (binary_expression "DAT_00106360 == 0" identifier == number_literal) )) (compound_statement "{\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }" { (expression_statement "local_194 = (uint *)(*DAT_00106380)(uVar35);" (assignment_expression "local_194 = (uint *)(*DAT_00106380)(uVar35)" identifier = (cast_expression "(uint *)(*DAT_00106380)(uVar35)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*DAT_00106380)(uVar35)" (parenthesized_expression "(*DAT_00106380)" ( (pointer_expression "*DAT_00106380" * identifier) )) (argument_list "(uVar35)" ( identifier ))))) ;) }) (else_clause "else {\n                local_194 = (uint *)FUN_000280e0();\n              }" else (compound_statement "{\n                local_194 = (uint *)FUN_000280e0();\n              }" { (expression_statement "local_194 = (uint *)FUN_000280e0();" (assignment_expression "local_194 = (uint *)FUN_000280e0()" identifier = (cast_expression "(uint *)FUN_000280e0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000280e0()" identifier (argument_list "()" ( ))))) ;) }))) (labeled_statement "LAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;" statement_identifier : (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009b549;" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;))) }) (else_clause "else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" else (compound_statement "{\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" { (if_statement "if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" if (parenthesized_expression "(*(ushort *)(iVar41 + 0x114) < uVar35)" ( (binary_expression "*(ushort *)(iVar41 + 0x114) < uVar35" (pointer_expression "*(ushort *)(iVar41 + 0x114)" * (cast_expression "(ushort *)(iVar41 + 0x114)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x114)" ( (binary_expression "iVar41 + 0x114" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" { (if_statement "if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" if (parenthesized_expression "(*(int *)(iVar41 + 0x110) == 0)" ( (binary_expression "*(int *)(iVar41 + 0x110) == 0" (pointer_expression "*(int *)(iVar41 + 0x110)" * (cast_expression "(int *)(iVar41 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x110)" ( (binary_expression "iVar41 + 0x110" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }" { (expression_statement "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;" (assignment_expression "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" * (cast_expression "(int *)(iVar41 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x124)" ( (binary_expression "iVar41 + 0x124" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" * (cast_expression "(int *)(iVar41 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x124)" ( (binary_expression "iVar41 + 0x124" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" else (if_statement "if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" if (parenthesized_expression "(*(char *)(iVar41 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar41 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" * (cast_expression "(char *)(iVar41 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x4d)" ( (binary_expression "iVar41 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;)))) (labeled_statement "LAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();" statement_identifier : (expression_statement "local_194 = (uint *)FUN_0002eee0();" (assignment_expression "local_194 = (uint *)FUN_0002eee0()" identifier = (cast_expression "(uint *)FUN_0002eee0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002eee0()" identifier (argument_list "()" ( ))))) ;)) (goto_statement "goto LAB_0009d302;" goto statement_identifier ;) })) (if_statement "if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" if (parenthesized_expression "(uVar35 < 0x81)" ( (binary_expression "uVar35 < 0x81" identifier < number_literal) )) (compound_statement "{\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }" { (expression_statement "local_194 = *(uint **)(iVar41 + 0x138);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x138)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x138)" * (cast_expression "(uint **)(iVar41 + 0x138)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x138)" ( (binary_expression "iVar41 + 0x138" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }" { (expression_statement "local_194 = *(uint **)(iVar41 + 0x134);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x134)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x134)" * (cast_expression "(uint **)(iVar41 + 0x134)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x134)" ( (binary_expression "iVar41 + 0x134" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009d46c;" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009d46c;" goto statement_identifier ;)) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x134) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x134) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x134)" * (cast_expression "(uint *)(iVar41 + 0x134)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x134)" ( (binary_expression "iVar41 + 0x134" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" else (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" { (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x138) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x138) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x138)" * (cast_expression "(uint *)(iVar41 + 0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x138)" ( (binary_expression "iVar41 + 0x138" identifier + number_literal) )))) = identifier) ;) }))) }) (else_clause "else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" else (compound_statement "{\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" { (labeled_statement "LAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);" statement_identifier : (expression_statement "local_194 = *(uint **)(iVar41 + 0x130);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x130)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x130)" * (cast_expression "(uint **)(iVar41 + 0x130)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x130)" ( (binary_expression "iVar41 + 0x130" identifier + number_literal) ))))) ;)) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }" { (expression_statement "local_194 = *(uint **)(iVar41 + 300);" (assignment_expression "local_194 = *(uint **)(iVar41 + 300)" identifier = (pointer_expression "*(uint **)(iVar41 + 300)" * (cast_expression "(uint **)(iVar41 + 300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 300)" ( (binary_expression "iVar41 + 300" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" { (expression_statement "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;" (assignment_expression "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" * (cast_expression "(int *)(iVar41 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x128)" ( (binary_expression "iVar41 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" * (cast_expression "(int *)(iVar41 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x128)" ( (binary_expression "iVar41 + 0x128" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_0009d2f9;" goto statement_identifier ;) })) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 300) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 300) = uVar35" (pointer_expression "*(uint *)(iVar41 + 300)" * (cast_expression "(uint *)(iVar41 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 300)" ( (binary_expression "iVar41 + 300" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" else (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" { (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x130) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x130) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x130)" * (cast_expression "(uint *)(iVar41 + 0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x130)" ( (binary_expression "iVar41 + 0x130" identifier + number_literal) )))) = identifier) ;) }))) }))) }))) (expression_statement "local_194[1] = param_4 & 0xff;" (assignment_expression "local_194[1] = param_4 & 0xff" (subscript_expression "local_194[1]" identifier [ number_literal ]) = (binary_expression "param_4 & 0xff" identifier & number_literal)) ;) (expression_statement "*local_194 = param_4 & 0xff;" (assignment_expression "*local_194 = param_4 & 0xff" (pointer_expression "*local_194" * identifier) = (binary_expression "param_4 & 0xff" identifier & number_literal)) ;) (expression_statement "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);" (assignment_expression "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44)" identifier = (cast_expression "(uint *)(iVar8 + 8 + uVar18 * 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 8 + uVar18 * 0x44" (binary_expression "iVar8 + 8" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) )))) ;) (expression_statement "local_194[2] = *puVar28;" (assignment_expression "local_194[2] = *puVar28" (subscript_expression "local_194[2]" identifier [ number_literal ]) = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "local_194[0x12] = puVar28[0x10];" (assignment_expression "local_194[0x12] = puVar28[0x10]" (subscript_expression "local_194[0x12]" identifier [ number_literal ]) = (subscript_expression "puVar28[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));" (assignment_expression "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" identifier = (binary_expression "(int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" ( (binary_expression "8 - (int)((uint)(local_194 + 3) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(local_194 + 3) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" ( (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_194 + 3)" ( (binary_expression "local_194 + 3" identifier + number_literal) ))) & number_literal) )))) )))) ;) (expression_statement "puVar23 = (undefined4 *)((int)puVar28 - iVar41);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar28 - iVar41)" identifier = (cast_expression "(undefined4 *)((int)puVar28 - iVar41)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 - iVar41)" ( (binary_expression "(int)puVar28 - iVar41" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" ( (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_194 + 3)" ( (binary_expression "local_194 + 3" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" for ( (assignment_expression "uVar35 = iVar41 + 0x44U >> 2" identifier = (binary_expression "iVar41 + 0x44U >> 2" (binary_expression "iVar41 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar35 != 0" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" { (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" * identifier) = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "iVar41 = param_3[1];" (assignment_expression "iVar41 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" if (parenthesized_expression "(0 < (int)(param_4 - 1))" ( (binary_expression "0 < (int)(param_4 - 1)" number_literal < (cast_expression "(int)(param_4 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_4 - 1)" ( (binary_expression "param_4 - 1" identifier - number_literal) )))) )) (compound_statement "{\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" { (expression_statement "pbVar36 = (byte *)(param_5 + 0x22);" (assignment_expression "pbVar36 = (byte *)(param_5 + 0x22)" identifier = (cast_expression "(byte *)(param_5 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x22)" ( (binary_expression "param_5 + 0x22" identifier + number_literal) )))) ;) (expression_statement "puVar28 = local_194 + 0x13;" (assignment_expression "puVar28 = local_194 + 0x13" identifier = (binary_expression "local_194 + 0x13" identifier + number_literal)) ;) (do_statement "do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);" do (compound_statement "{\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              }" { (expression_statement "bVar4 = *pbVar36;" (assignment_expression "bVar4 = *pbVar36" identifier = (pointer_expression "*pbVar36" * identifier)) ;) (expression_statement "pbVar36 = pbVar36 + 0x54;" (assignment_expression "pbVar36 = pbVar36 + 0x54" identifier = (binary_expression "pbVar36 + 0x54" identifier + number_literal)) ;) (expression_statement "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);" (assignment_expression "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" identifier = (cast_expression "(uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)bVar4 * 0x44 + iVar41 + 8)" ( (binary_expression "(uint)bVar4 * 0x44 + iVar41 + 8" (binary_expression "(uint)bVar4 * 0x44 + iVar41" (binary_expression "(uint)bVar4 * 0x44" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + identifier) + number_literal) )))) ;) (expression_statement "*puVar28 = *puVar44;" (assignment_expression "*puVar28 = *puVar44" (pointer_expression "*puVar28" * identifier) = (pointer_expression "*puVar44" * identifier)) ;) (expression_statement "puVar28[0x10] = puVar44[0x10];" (assignment_expression "puVar28[0x10] = puVar44[0x10]" (subscript_expression "puVar28[0x10]" identifier [ number_literal ]) = (subscript_expression "puVar44[0x10]" identifier [ number_literal ])) ;) (expression_statement "puVar29 = puVar28 + 0x11;" (assignment_expression "puVar29 = puVar28 + 0x11" identifier = (binary_expression "puVar28 + 0x11" identifier + number_literal)) ;) (expression_statement "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" identifier = (binary_expression "(int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(puVar28 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar28 + 1)" ( (binary_expression "puVar28 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar23 = (undefined4 *)((int)puVar44 - iVar43);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar44 - iVar43)" identifier = (cast_expression "(undefined4 *)((int)puVar44 - iVar43)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar44 - iVar43)" ( (binary_expression "(int)puVar44 - iVar43" (cast_expression "(int)puVar44" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar28 + 1)" ( (binary_expression "puVar28 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" for ( (assignment_expression "uVar35 = iVar43 + 0x44U >> 2" identifier = (binary_expression "iVar43 + 0x44U >> 2" (binary_expression "iVar43 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar35 != 0" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" { (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" * identifier) = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar28 = puVar29;" (assignment_expression "puVar28 = puVar29" identifier = identifier) ;) }) while (parenthesized_expression "(local_194 + param_4 * 0x11 + 2 != puVar29)" ( (binary_expression "local_194 + param_4 * 0x11 + 2 != puVar29" (binary_expression "local_194 + param_4 * 0x11 + 2" (binary_expression "local_194 + param_4 * 0x11" identifier + (binary_expression "param_4 * 0x11" identifier * number_literal)) + number_literal) != identifier) )) ;) })) }))) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }" { (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" if (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" { (for_statement "for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" for ( (assignment_expression "iVar41 = *(int *)(iVar34 + 8)" identifier = (pointer_expression "*(int *)(iVar34 + 8)" * (cast_expression "(int *)(iVar34 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 8)" ( (binary_expression "iVar34 + 8" identifier + number_literal) ))))) ; (binary_expression "iVar41 != 0" identifier != number_literal) ; (assignment_expression "iVar41 = *(int *)(iVar41 + 0x14)" identifier = (pointer_expression "*(int *)(iVar41 + 0x14)" * (cast_expression "(int *)(iVar41 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x14)" ( (binary_expression "iVar41 + 0x14" identifier + number_literal) ))))) ) (compound_statement "{\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" { (if_statement "if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" if (parenthesized_expression "((*(byte *)(iVar41 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" * (cast_expression "(byte *)(iVar41 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x37)" ( (binary_expression "iVar41 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" { (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00049630(*(undefined2 *)(iVar41 + 0x32));" (call_expression "FUN_00049630(*(undefined2 *)(iVar41 + 0x32))" identifier (argument_list "(*(undefined2 *)(iVar41 + 0x32))" ( (pointer_expression "*(undefined2 *)(iVar41 + 0x32)" * (cast_expression "(undefined2 *)(iVar41 + 0x32)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x32)" ( (binary_expression "iVar41 + 0x32" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00051750();" (call_expression "FUN_00051750()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0009b879;" goto statement_identifier ;) })) })) (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;) })) (expression_statement "iVar41 = param_1[0xb];" (assignment_expression "iVar41 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar41 + 1;" (assignment_expression "param_1[0xb] = iVar41 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar41 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00049630(iVar41 + 1);" (call_expression "FUN_00049630(iVar41 + 1)" identifier (argument_list "(iVar41 + 1)" ( (binary_expression "iVar41 + 1" identifier + number_literal) ))) ;) (labeled_statement "LAB_0009b879:\n            local_140 = param_1[0xb] + 1;" statement_identifier : (expression_statement "local_140 = param_1[0xb] + 1;" (assignment_expression "local_140 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "param_1[0xb] = local_140;" (assignment_expression "param_1[0xb] = local_140" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_140 = 0;\n          }" else (compound_statement "{\n            local_140 = 0;\n          }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = FUN_00049630(iVar21);" (assignment_expression "iVar21 = FUN_00049630(iVar21)" identifier = (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier )))) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0009d0ac:\n            local_134 = 0;\n          }" { (labeled_statement "LAB_0009d0ac:\n            local_134 = 0;" statement_identifier : (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" else (compound_statement "{\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" { (do_statement "do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);" do (compound_statement "{\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            }" { (expression_statement "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);" (assignment_expression "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17])" identifier = (cast_expression "(int *)(iVar27 * 0x30 + param_3[0x17])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 * 0x30 + param_3[0x17])" ( (binary_expression "iVar27 * 0x30 + param_3[0x17]" (binary_expression "iVar27 * 0x30" identifier * number_literal) + (subscript_expression "param_3[0x17]" identifier [ number_literal ])) )))) ;) (if_statement "if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" if (parenthesized_expression "(((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0))" ( (binary_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" (parenthesized_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0))" ( (binary_expression "(piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)" (parenthesized_expression "(piVar24 != piVar31)" ( (binary_expression "piVar24 != piVar31" identifier != identifier) )) && (parenthesized_expression "((*(byte *)((int)piVar24 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)piVar24 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 10) & 6)" ( (binary_expression "*(byte *)((int)piVar24 + 10) & 6" (pointer_expression "*(byte *)((int)piVar24 + 10)" * (cast_expression "(byte *)((int)piVar24 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + 10)" ( (binary_expression "(int)piVar24 + 10" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" ( (binary_expression "(*(ushort *)(piVar24 + 3) & 0x1fff) != 0" (parenthesized_expression "(*(ushort *)(piVar24 + 3) & 0x1fff)" ( (binary_expression "*(ushort *)(piVar24 + 3) & 0x1fff" (pointer_expression "*(ushort *)(piVar24 + 3)" * (cast_expression "(ushort *)(piVar24 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar24 + 3)" ( (binary_expression "piVar24 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" { (if_statement "if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }" if (parenthesized_expression "(*piVar24 != 0)" ( (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" * identifier) != number_literal) )) (compound_statement "{\n                  FUN_0005dca0();\n                }" { (expression_statement "FUN_0005dca0();" (call_expression "FUN_0005dca0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar43 = FUN_000559f0();" (assignment_expression "iVar43 = FUN_000559f0()" identifier = (call_expression "FUN_000559f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) })) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < iVar41)" ( (binary_expression "iVar27 < iVar41" identifier < identifier) )) ;) (if_statement "if (iVar43 == 0) goto LAB_0009d0ac;" if (parenthesized_expression "(iVar43 == 0)" ( (binary_expression "iVar43 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009d0ac;" goto statement_identifier ;)) (expression_statement "local_134 = FUN_000556e0();" (assignment_expression "local_134 = FUN_000556e0()" identifier = (call_expression "FUN_000556e0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "uVar32 = *(ushort *)(param_3 + 10);" (assignment_expression "uVar32 = *(ushort *)(param_3 + 10)" identifier = (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) ))))) ;) (expression_statement "FUN_000496a0(param_1,1,"MULTI-INDEX OR");" (call_expression "FUN_000496a0(param_1,1,"MULTI-INDEX OR")" identifier (argument_list "(param_1,1,"MULTI-INDEX OR")" ( identifier , number_literal , (string_literal ""MULTI-INDEX OR"" " string_content ") ))) ;) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" identifier = (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" if (parenthesized_expression "(iVar41 < 1)" ( (binary_expression "iVar41 < 1" identifier < number_literal) )) (compound_statement "{\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }" { (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009cb9d;" goto statement_identifier ;) })) (expression_statement "param_5[0x10] = 0;" (assignment_expression "param_5[0x10] = 0" (subscript_expression "param_5[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) }) (else_clause "else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" else (compound_statement "{\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (do_statement "do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);" do (compound_statement "{\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            }" { (expression_statement "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));" (assignment_expression "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" identifier = (cast_expression "(undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" ( (binary_expression "iVar43 * 0x30 + *(int *)(iVar42 + 0x14)" (binary_expression "iVar43 * 0x30" identifier * number_literal) + (pointer_expression "*(int *)(iVar42 + 0x14)" * (cast_expression "(int *)(iVar42 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x14)" ( (binary_expression "iVar42 + 0x14" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar27 = iVar43 + 1;" (assignment_expression "iVar27 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (if_statement "if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" if (parenthesized_expression "((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0))" ( (binary_expression "(puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" (parenthesized_expression "(puVar23[5] == iVar9)" ( (binary_expression "puVar23[5] == iVar9" (subscript_expression "puVar23[5]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 0xd) & 4) != 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 0xd) & 4)" ( (binary_expression "*(byte *)((int)puVar23 + 0xd) & 4" (pointer_expression "*(byte *)((int)puVar23 + 0xd)" * (cast_expression "(byte *)((int)puVar23 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 0xd)" ( (binary_expression "(int)puVar23 + 0xd" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" { (if_statement "if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" if (parenthesized_expression "(local_134 != 0)" ( (binary_expression "local_134 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" { (expression_statement "*(undefined4 *)(local_134 + 0xc) = *puVar23;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = *puVar23" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" * (cast_expression "(undefined4 *)(local_134 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_134 + 0xc)" ( (binary_expression "local_134 + 0xc" identifier + number_literal) )))) = (pointer_expression "*puVar23" * identifier)) ;) })) (expression_statement "FUN_000496a0(param_1,1,"INDEX %d",iVar27);" (call_expression "FUN_000496a0(param_1,1,"INDEX %d",iVar27)" identifier (argument_list "(param_1,1,"INDEX %d",iVar27)" ( identifier , number_literal , (string_literal ""INDEX %d"" " string_content ") , identifier ))) ;) (expression_statement "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);" (assignment_expression "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" identifier = (call_expression "FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" identifier (argument_list "(0,0,uVar32 & 0x400 | 0x20,iVar20)" ( number_literal , number_literal , (binary_expression "uVar32 & 0x400 | 0x20" (binary_expression "uVar32 & 0x400" identifier & number_literal) | number_literal) , identifier )))) ;) (if_statement "if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" { (expression_statement "piVar31 = (int *)param_1[0x1d];" (assignment_expression "piVar31 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    piVar31 = param_1;\n                  }" { (expression_statement "piVar31 = param_1;" (assignment_expression "piVar31 = param_1" identifier = identifier) ;) })) (if_statement "if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }" if (parenthesized_expression "(*(char *)((int)piVar31 + 0xcb) == '\x02')" ( (binary_expression "*(char *)((int)piVar31 + 0xcb) == '\x02'" (pointer_expression "*(char *)((int)piVar31 + 0xcb)" * (cast_expression "(char *)((int)piVar31 + 0xcb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 0xcb)" ( (binary_expression "(int)piVar31 + 0xcb" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    FUN_0005ac00(0);\n                  }" { (expression_statement "FUN_0005ac00(0);" (call_expression "FUN_0005ac00(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }" { (if_statement "if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }" if (parenthesized_expression "(*(int *)(iVar42 + 0xc) + -1 == iVar43)" ( (binary_expression "*(int *)(iVar42 + 0xc) + -1 == iVar43" (binary_expression "*(int *)(iVar42 + 0xc) + -1" (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) )))) + number_literal) == identifier) )) (compound_statement "{\n                      iVar43 = -1;\n                    }" { (expression_statement "iVar43 = -1;" (assignment_expression "iVar43 = -1" identifier = number_literal) ;) })) (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" if (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) == 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }" { (expression_statement "FUN_00095620(0xffffffff,local_140);" (call_expression "FUN_00095620(0xffffffff,local_140)" identifier (argument_list "(0xffffffff,local_140)" ( number_literal , identifier ))) ;) (expression_statement "iVar25 = FUN_000493f0(0,local_140);" (assignment_expression "iVar25 = FUN_000493f0(0,local_140)" identifier = (call_expression "FUN_000493f0(0,local_140)" identifier (argument_list "(0,local_140)" ( number_literal , identifier )))) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" { (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" identifier = (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" * (cast_expression "(undefined1 *)(iVar2 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar2 + 0x10) = iVar43;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar43" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" else (compound_statement "{\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" { (expression_statement "iVar2 = *(int *)(iVar34 + 8);" (assignment_expression "iVar2 = *(int *)(iVar34 + 8)" identifier = (pointer_expression "*(int *)(iVar34 + 8)" * (cast_expression "(int *)(iVar34 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 8)" ( (binary_expression "iVar34 + 8" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" { (if_statement "if (iVar2 == 0) goto LAB_0009ca50;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar2 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar2 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar2 + 0x37) & 3" (pointer_expression "*(byte *)(iVar2 + 0x37)" * (cast_expression "(byte *)(iVar2 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x37)" ( (binary_expression "iVar2 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = *(int *)(iVar2 + 0x14);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x14)" identifier = (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "uVar35 = (uint)*(ushort *)(iVar2 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar2 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar2 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x32)" ( (binary_expression "iVar2 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "iVar30 = FUN_00025510();" (assignment_expression "iVar30 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" if (parenthesized_expression "(uVar35 != 0)" ( (binary_expression "uVar35 != 0" identifier != number_literal) )) (compound_statement "{\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" { (expression_statement "iVar46 = 0;" (assignment_expression "iVar46 = 0" identifier = number_literal) ;) (expression_statement "iVar25 = iVar30;" (assignment_expression "iVar25 = iVar30" identifier = identifier) ;) (do_statement "do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);" do (compound_statement "{\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        }" { (expression_statement "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);" (assignment_expression "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46)" identifier = (cast_expression "(short *)(*(int *)(iVar2 + 4) + iVar46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + iVar46)" ( (binary_expression "*(int *)(iVar2 + 4) + iVar46" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar46 = iVar46 + 2;" (assignment_expression "iVar46 = iVar46 + 2" identifier = (binary_expression "iVar46 + 2" identifier + number_literal)) ;) (expression_statement "FUN_00095620((int)*psVar3,iVar25);" (call_expression "FUN_00095620((int)*psVar3,iVar25)" identifier (argument_list "((int)*psVar3,iVar25)" ( (cast_expression "(int)*psVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar3" * identifier)) , identifier ))) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar35 * 2 != iVar46)" ( (binary_expression "uVar35 * 2 != iVar46" (binary_expression "uVar35 * 2" identifier * number_literal) != identifier) )) ;) })) (if_statement "if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" if (parenthesized_expression "(iVar43 == 0)" ( (binary_expression "iVar43 == 0" identifier == number_literal) )) (compound_statement "{\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }" { (expression_statement "FUN_000493f0(uVar35,local_140);" (call_expression "FUN_000493f0(uVar35,local_140)" identifier (argument_list "(uVar35,local_140)" ( identifier , identifier ))) ;) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" identifier (argument_list "(local_140,iVar30,uVar35)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" else (compound_statement "{\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" { (expression_statement "iVar25 = FUN_000493f0(0,iVar30);" (assignment_expression "iVar25 = FUN_000493f0(0,iVar30)" identifier = (call_expression "FUN_000493f0(0,iVar30)" identifier (argument_list "(0,iVar30)" ( number_literal , identifier )))) ;) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" if (parenthesized_expression "(*(char *)(iVar2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x4d)" * (cast_expression "(char *)(iVar2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4d)" ( (binary_expression "iVar2 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" { (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" identifier = (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" * (cast_expression "(undefined1 *)(iVar2 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar2 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar2 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar2 + 0x10)" * (cast_expression "(uint *)(iVar2 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" if (parenthesized_expression "(-1 < iVar43)" ( (binary_expression "-1 < iVar43" number_literal < identifier) )) (compound_statement "{\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" { (expression_statement "FUN_000493f0(uVar35,local_140,iVar2,iVar2);" (call_expression "FUN_000493f0(uVar35,local_140,iVar2,iVar2)" identifier (argument_list "(uVar35,local_140,iVar2,iVar2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" identifier (argument_list "(local_140,iVar30,uVar35)" ( identifier , identifier , identifier ))) ;) (if_statement "if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" if (parenthesized_expression "(0 < param_2[0x1a])" ( (binary_expression "0 < param_2[0x1a]" number_literal < (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" { (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) })) }))) (if_statement "if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" if (parenthesized_expression "(uVar35 == 1)" ( (binary_expression "uVar35 == 1" identifier == number_literal) )) (compound_statement "{\n                        FUN_00029ad0();\n                      }" { (expression_statement "FUN_00029ad0();" (call_expression "FUN_00029ad0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" else (if_statement "if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" if (parenthesized_expression "(param_1[7] < (int)uVar35)" ( (binary_expression "param_1[7] < (int)uVar35" (subscript_expression "param_1[7]" identifier [ number_literal ]) < (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" { (expression_statement "param_1[7] = uVar35;" (assignment_expression "param_1[7] = uVar35" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = iVar30;" (assignment_expression "param_1[8] = iVar30" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })))) }))) (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" identifier (argument_list "(iVar22)" ( identifier ))) ;) (if_statement "if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" if (parenthesized_expression "(iVar25 != 0)" ( (binary_expression "iVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" { (if_statement "if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar25 = param_2[0x1a] + -1;\n                      }" { (expression_statement "iVar25 = param_2[0x1a] + -1;" (assignment_expression "iVar25 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar25 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar25 * 0x14)" ( (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n                    FUN_00049630(iVar22);\n                  }" else (compound_statement "{\n                    FUN_00049630(iVar22);\n                  }" { (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" identifier (argument_list "(iVar22)" ( identifier ))) ;) }))) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) (if_statement "if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }" if (parenthesized_expression "((*(byte *)(iVar41 + 0x30) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar41 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar41 + 0x30) & 2)" ( (binary_expression "*(byte *)(iVar41 + 0x30) & 2" (pointer_expression "*(byte *)(iVar41 + 0x30)" * (cast_expression "(byte *)(iVar41 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x30)" ( (binary_expression "iVar41 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    bVar13 = bVar48;\n                  }" { (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" identifier = identifier) ;) })) (expression_statement "bVar48 = bVar13;" (assignment_expression "bVar48 = bVar13" identifier = identifier) ;) (if_statement "if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" if (parenthesized_expression "(((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))))" ( (binary_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" (parenthesized_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2)" ( (binary_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2" (pointer_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" * (cast_expression "(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x25)" ( (binary_expression "*(int *)(iVar41 + 0x330) + 0x25" (pointer_expression "*(int *)(iVar41 + 0x330)" * (cast_expression "(int *)(iVar41 + 0x330)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x330)" ( (binary_expression "iVar41 + 0x330" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" ( (parenthesized_expression "(iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))" ( (comma_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)" (assignment_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20)" identifier = (pointer_expression "*(int *)(*(int *)(iVar41 + 0x330) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar41 + 0x330) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x20)" ( (binary_expression "*(int *)(iVar41 + 0x330) + 0x20" (pointer_expression "*(int *)(iVar41 + 0x330)" * (cast_expression "(int *)(iVar41 + 0x330)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x330)" ( (binary_expression "iVar41 + 0x330" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "iVar27 != 1 &&\n                      (local_13c != iVar41)" (binary_expression "iVar27 != 1" identifier != number_literal) && (parenthesized_expression "(local_13c != iVar41)" ( (binary_expression "local_13c != iVar41" identifier != identifier) )))) )) ))) )) (compound_statement "{\n                    local_13c = 0;\n                  }" { (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" else (compound_statement "{\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" { (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }" if (parenthesized_expression "(((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2))" ( (binary_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" ( (comma_expression "local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2" (assignment_expression "local_13c = 0" identifier = number_literal) , (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" * (cast_expression "(byte *)(iVar41 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x37)" ( (binary_expression "iVar41 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                      local_13c = iVar41;\n                    }" { (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" identifier = identifier) ;) })) }))) (expression_statement "FUN_00069230();" (call_expression "FUN_00069230()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" if (parenthesized_expression "(iVar41 < 0)" ( (binary_expression "iVar41 < 0" identifier < number_literal) )) (compound_statement "{\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" { (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" identifier = (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" { (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" ( (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" identifier = (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" identifier = (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) })) (expression_statement "iVar43 = iVar27;" (assignment_expression "iVar43 = iVar27" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 < iVar41)" ( (binary_expression "iVar27 < iVar41" identifier < identifier) )) ;) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" statement_identifier : (if_statement "if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar41 < 0)" ( (binary_expression "iVar41 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar41 = piVar31[0x1a] + -1;\n              }" { (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" identifier = (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" { (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" ( (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" identifier = (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0x10] = local_13c;" (assignment_expression "param_5[0x10] = local_13c" (subscript_expression "param_5[0x10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }" if (parenthesized_expression "(local_13c != 0)" ( (binary_expression "local_13c != 0" identifier != number_literal) )) (compound_statement "{\n              param_5[2] = iVar20;\n            }" { (expression_statement "param_5[2] = iVar20;" (assignment_expression "param_5[2] = iVar20" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) })) }))) (if_statement "if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" if (parenthesized_expression "(local_134 != 0)" ( (binary_expression "local_134 != 0" identifier != number_literal) )) (compound_statement "{\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" { (expression_statement "*(undefined4 *)(local_134 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = 0" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" * (cast_expression "(undefined4 *)(local_134 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_134 + 0xc)" ( (binary_expression "local_134 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar41 = param_2[0x1a] + -1;" (assignment_expression "iVar41 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }" if (parenthesized_expression "(-1 < iVar21)" ( (binary_expression "-1 < iVar21" number_literal < identifier) )) (compound_statement "{\n            iVar41 = iVar21;\n          }" { (expression_statement "iVar41 = iVar21;" (assignment_expression "iVar41 = iVar21" identifier = identifier) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar41 * 0x14)" ( (binary_expression "param_2[0x19] + iVar41 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 4) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 4) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 4)" * (cast_expression "(int *)(puVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 4)" ( (binary_expression "puVar26 + 4" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" identifier (argument_list "(param_5[3])" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }" if (parenthesized_expression "((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0))" ( (binary_expression "(1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)" (parenthesized_expression "(1 < *(byte *)(param_3 + 0xb))" ( (binary_expression "1 < *(byte *)(param_3 + 0xb)" number_literal < (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) ))))) )) && (parenthesized_expression "(local_194 != (uint *)0x0)" ( (binary_expression "local_194 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            FUN_00023410();\n          }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" if (parenthesized_expression "(!bVar48)" ( (unary_expression "!bVar48" ! identifier) )) (compound_statement "{\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" { (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "uVar32 = *(ushort *)(iVar42 + 0x1c);" (assignment_expression "uVar32 = *(ushort *)(iVar42 + 0x1c)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x1c)" * (cast_expression "(ushort *)(iVar42 + 0x1c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(ushort *)(iVar42 + 0x18);" (assignment_expression "uVar6 = *(ushort *)(iVar42 + 0x18)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x18)" * (cast_expression "(ushort *)(iVar42 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x18)" ( (binary_expression "iVar42 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_118 = (uint)uVar6;" (assignment_expression "local_118 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = *(ushort *)(iVar42 + 0x1a);" (assignment_expression "uVar7 = *(ushort *)(iVar42 + 0x1a)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x1a)" * (cast_expression "(ushort *)(iVar42 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1a)" ( (binary_expression "iVar42 + 0x1a" identifier + number_literal) ))))) ;) (expression_statement "local_158 = *(int *)(iVar42 + 0x20);" (assignment_expression "local_158 = *(int *)(iVar42 + 0x20)" identifier = (pointer_expression "*(int *)(iVar42 + 0x20)" * (cast_expression "(int *)(iVar42 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x20)" ( (binary_expression "iVar42 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar41 = param_5[2];" (assignment_expression "iVar41 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\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          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }" { (expression_statement "uVar37 = 0;" (assignment_expression "uVar37 = 0" identifier = number_literal) ;) (expression_statement "local_120 = (int *)0x0;" (assignment_expression "local_120 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar19 = local_118;" (assignment_expression "uVar19 = local_118" identifier = identifier) ;) }) (else_clause "else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" else (compound_statement "{\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" { (expression_statement "uVar37 = (uint)uVar7;" (assignment_expression "uVar37 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);" (assignment_expression "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + local_118 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + local_118 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "local_118 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar19 = local_118 + 1;" (assignment_expression "uVar19 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) }))) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (if_statement "if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" if (parenthesized_expression "((uVar35 & 0x10) == 0)" ( (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "local_12c = (int *)0x0;" (assignment_expression "local_12c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" else (compound_statement "{\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" { (expression_statement "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);" (assignment_expression "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar19 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + uVar19 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }" if (parenthesized_expression "(uVar37 < uVar32)" ( (binary_expression "uVar37 < uVar32" identifier < identifier) )) (compound_statement "{\n            uVar37 = (uint)uVar32;\n          }" { (expression_statement "uVar37 = (uint)uVar32;" (assignment_expression "uVar37 = (uint)uVar32" identifier = (cast_expression "(uint)uVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" * (cast_expression "(byte *)((int)local_12c + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_12c + 0xb)" ( (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" { (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = local_168;" (assignment_expression "param_5[0xb] = local_168" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "param_5[0xc] = param_2[0x1a];" (assignment_expression "param_5[0xc] = param_2[0x1a]" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar20 = param_5[0xb];" (assignment_expression "iVar20 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_5[0xb] = iVar20 * 2;" (assignment_expression "param_5[0xb] = iVar20 * 2" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = (binary_expression "iVar20 * 2" identifier * number_literal)) ;) (expression_statement "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;" (assignment_expression "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" * (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" ( (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" * (cast_expression "(int *)(local_158 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x1c)" ( (binary_expression "local_158 + 0x1c" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\x01'" ' escape_sequence ')) ^ identifier) | (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) })) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (if_statement "if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" if (parenthesized_expression "(local_120 == (int *)0x0)" ( (binary_expression "local_120 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" { (expression_statement "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);" (assignment_expression "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" identifier = (cast_expression "(int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" * (cast_expression "(short *)(*(int *)(local_158 + 4) + local_118 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 4) + local_118 * 2)" ( (binary_expression "*(int *)(local_158 + 4) + local_118 * 2" (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) + (binary_expression "local_118 * 2" identifier * number_literal)) )))))) ;) (if_statement "if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" if (parenthesized_expression "(iVar34 < 0)" ( (binary_expression "iVar34 < 0" identifier < number_literal) )) (compound_statement "{\n              bVar48 = iVar34 == -2;\n            }" { (expression_statement "bVar48 = iVar34 == -2;" (assignment_expression "bVar48 = iVar34 == -2" identifier = (binary_expression "iVar34 == -2" identifier == number_literal)) ;) }) (else_clause "else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" else (compound_statement "{\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" { (expression_statement "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';" (assignment_expression "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" identifier = (binary_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" * (cast_expression "(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" ( (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc" (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14" (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 4)" ( (binary_expression "*(int *)(local_158 + 0xc) + 4" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar34 * 0x14" identifier * number_literal)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) }))) })) }))) (expression_statement "local_128 = 0;" (assignment_expression "local_128 = 0" identifier = number_literal) ;) (if_statement "if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" if (parenthesized_expression "((uVar35 & 0x80030) == 0x80000)" ( (binary_expression "(uVar35 & 0x80030) == 0x80000" (parenthesized_expression "(uVar35 & 0x80030)" ( (binary_expression "uVar35 & 0x80030" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" { (expression_statement "iVar34 = *param_5;" (assignment_expression "iVar34 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[9] = local_168;" (assignment_expression "param_5[9] = local_168" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar20 = local_168;" (assignment_expression "iVar20 = local_168" identifier = identifier) ;) (if_statement "if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" if (parenthesized_expression "(iVar34 != 0)" ( (binary_expression "iVar34 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" { (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) (expression_statement "iVar34 = param_1[0xe];" (assignment_expression "iVar34 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" identifier = true) ;) (expression_statement "uVar37 = 1;" (assignment_expression "uVar37 = 1" identifier = number_literal) ;) (expression_statement "param_1[0xe] = iVar34 + -1;" (assignment_expression "param_1[0xe] = iVar34 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "local_128 = local_168;" (assignment_expression "local_128 = local_168" identifier = identifier) ;) (expression_statement "param_5[10] = iVar34 + -1;" (assignment_expression "param_5[10] = iVar34 + -1" (subscript_expression "param_5[10]" identifier [ number_literal ]) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) })) (if_statement "if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" if (parenthesized_expression "(uVar6 < *(ushort *)(local_158 + 0x32))" ( (binary_expression "uVar6 < *(ushort *)(local_158 + 0x32)" identifier < (pointer_expression "*(ushort *)(local_158 + 0x32)" * (cast_expression "(ushort *)(local_158 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x32)" ( (binary_expression "local_158 + 0x32" identifier + number_literal) ))))) )) (compound_statement "{\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }" { (if_statement "if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;" if (parenthesized_expression "((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)" ( (binary_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33" (parenthesized_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0')" ( (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" * (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" ( (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" * (cast_expression "(int *)(local_158 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x1c)" ( (binary_expression "local_158 + 0x1c" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) == identifier) )) (goto_statement "goto LAB_0009c48d;" goto statement_identifier ;)) (labeled_statement "LAB_0009ac34:\n          uVar6 = uVar32;" statement_identifier : (expression_statement "uVar6 = uVar32;" (assignment_expression "uVar6 = uVar32" identifier = identifier) ;)) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" identifier = identifier) ;) }) (else_clause "else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" else (compound_statement "{\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" { (if_statement "if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;" if (parenthesized_expression "((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0))" ( (binary_expression "(*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)" (parenthesized_expression "(*(ushort *)(local_158 + 0x32) != uVar6)" ( (binary_expression "*(ushort *)(local_158 + 0x32) != uVar6" (pointer_expression "*(ushort *)(local_158 + 0x32)" * (cast_expression "(ushort *)(local_158 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x32)" ( (binary_expression "local_158 + 0x32" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "((uVar45 & 1) == 0)" ( (binary_expression "(uVar45 & 1) == 0" (parenthesized_expression "(uVar45 & 1)" ( (binary_expression "uVar45 & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009ac34;" goto statement_identifier ;)) (labeled_statement "LAB_0009c48d:\n          piVar31 = local_12c;" statement_identifier : (expression_statement "piVar31 = local_12c;" (assignment_expression "piVar31 = local_12c" identifier = identifier) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "local_12c = local_120;" (assignment_expression "local_12c = local_120" identifier = identifier) ;) (expression_statement "uVar6 = uVar7 & 0xff;" (assignment_expression "uVar6 = uVar7 & 0xff" identifier = (binary_expression "uVar7 & 0xff" identifier & number_literal)) ;) (expression_statement "local_120 = piVar31;" (assignment_expression "local_120 = piVar31" identifier = identifier) ;) (expression_statement "uVar7 = uVar32;" (assignment_expression "uVar7 = uVar32" identifier = identifier) ;) }))) (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar34 = param_5[0x12];" (assignment_expression "iVar34 = param_5[0x12]" identifier = (subscript_expression "param_5[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar32 = *(ushort *)(iVar34 + 0x2a);" (assignment_expression "uVar32 = *(ushort *)(iVar34 + 0x2a)" identifier = (pointer_expression "*(ushort *)(iVar34 + 0x2a)" * (cast_expression "(ushort *)(iVar34 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x2a)" ( (binary_expression "iVar34 + 0x2a" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = (uint)uVar32;" (assignment_expression "uVar35 = (uint)uVar32" identifier = (cast_expression "(uint)uVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar45 = (uint)*(ushort *)(iVar34 + 0x18);" (assignment_expression "uVar45 = (uint)*(ushort *)(iVar34 + 0x18)" identifier = (binary_expression "(uint)*(ushort *)(iVar34 + 0x18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar34 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x18)" ( (binary_expression "iVar34 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_1[0xb] = iVar20 + uVar37 + uVar45;" (assignment_expression "param_1[0xb] = iVar20 + uVar37 + uVar45" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar20 + uVar37 + uVar45" (binary_expression "iVar20 + uVar37" identifier + identifier) + identifier)) ;) (expression_statement "FUN_0002e410();" (call_expression "FUN_0002e410()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar20 = FUN_000300b0();" (assignment_expression "iVar20 = FUN_000300b0()" identifier = (call_expression "FUN_000300b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" if (parenthesized_expression "(uVar32 != 0)" ( (binary_expression "uVar32 != 0" identifier != number_literal) )) (compound_statement "{\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" { (if_statement "if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) }) (else_clause "else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" else (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) }))) (expression_statement "iVar22 = FUN_000493f0(0,local_168);" (assignment_expression "iVar22 = FUN_000493f0(0,local_168)" identifier = (call_expression "FUN_000493f0(0,local_168)" identifier (argument_list "(0,local_168)" ( number_literal , identifier )))) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }" { (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" identifier = (subscript_expression "piVar31[0x19]" identifier [ number_literal ])) ;) (expression_statement "iVar43 = iVar27 + iVar22 * 0x14;" (assignment_expression "iVar43 = iVar27 + iVar22 * 0x14" identifier = (binary_expression "iVar27 + iVar22 * 0x14" identifier + (binary_expression "iVar22 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar43 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar43 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar43 + 1)" * (cast_expression "(undefined1 *)(iVar43 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 1)" ( (binary_expression "iVar43 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar43 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar43 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar43 + 0x10)" * (cast_expression "(uint *)(iVar43 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 0x10)" ( (binary_expression "iVar43 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" identifier = (subscript_expression "piVar31[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" { (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" identifier = (subscript_expression "piVar31[0x19]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = iVar22 + -1;" (assignment_expression "iVar21 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) })) (expression_statement "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14)" identifier = (cast_expression "(undefined1 *)(iVar27 + iVar21 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + iVar21 * 0x14)" ( (binary_expression "iVar27 + iVar21 * 0x14" identifier + (binary_expression "iVar21 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" else (compound_statement "{\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" { (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" identifier = (subscript_expression "piVar31[0x1a]" identifier [ number_literal ])) ;) }))) (expression_statement "*(int *)(puVar26 + 8) = iVar22;" (assignment_expression "*(int *)(puVar26 + 8) = iVar22" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);" do (compound_statement "{\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          }" { (expression_statement "uVar38 = uVar19 + 1;" (assignment_expression "uVar38 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000493f0(uVar19,local_168 + uVar19);" (call_expression "FUN_000493f0(uVar19,local_168 + uVar19)" identifier (argument_list "(uVar19,local_168 + uVar19)" ( identifier , (binary_expression "local_168 + uVar19" identifier + identifier) ))) ;) (expression_statement "uVar19 = uVar38;" (assignment_expression "uVar19 = uVar38" identifier = identifier) ;) }) while (parenthesized_expression "(uVar38 != uVar35)" ( (binary_expression "uVar38 != uVar35" identifier != identifier) )) ;) })) (if_statement "if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" if (parenthesized_expression "(uVar35 < uVar45)" ( (binary_expression "uVar35 < uVar45" identifier < identifier) )) (compound_statement "{\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" { (expression_statement "local_154 = uVar35 * 4;" (assignment_expression "local_154 = uVar35 * 4" identifier = (binary_expression "uVar35 * 4" identifier * number_literal)) ;) (do_statement "do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);" do (compound_statement "{\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          }" { (expression_statement "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154)" identifier = (pointer_expression "*(int **)(*(int *)(iVar34 + 0x30) + local_154)" * (cast_expression "(int **)(*(int *)(iVar34 + 0x30) + local_154)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar34 + 0x30) + local_154)" ( (binary_expression "*(int *)(iVar34 + 0x30) + local_154" (pointer_expression "*(int *)(iVar34 + 0x30)" * (cast_expression "(int *)(iVar34 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x30)" ( (binary_expression "iVar34 + 0x30" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar21 = local_168 + uVar35;" (assignment_expression "iVar21 = local_168 + uVar35" identifier = (binary_expression "local_168 + uVar35" identifier + identifier)) ;) (expression_statement "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);" (assignment_expression "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21)" identifier = (call_expression "FUN_0009a2d0(uVar35,uVar33,iVar21)" identifier (argument_list "(uVar35,uVar33,iVar21)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" if (parenthesized_expression "(iVar21 != iVar22)" ( (binary_expression "iVar21 != iVar22" identifier != identifier) )) (compound_statement "{\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" { (if_statement "if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }" if (parenthesized_expression "(uVar37 + uVar45 == 1)" ( (binary_expression "uVar37 + uVar45 == 1" (binary_expression "uVar37 + uVar45" identifier + identifier) == number_literal) )) (compound_statement "{\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }" { (expression_statement "bVar47 = local_168 != 0;" (assignment_expression "bVar47 = local_168 != 0" identifier = (binary_expression "local_168 != 0" identifier != number_literal)) ;) (expression_statement "local_168 = iVar22;" (assignment_expression "local_168 = iVar22" identifier = identifier) ;) (if_statement "if (bVar47) {\n                  FUN_000254e0();\n                }" if (parenthesized_expression "(bVar47)" ( identifier )) (compound_statement "{\n                  FUN_000254e0();\n                }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n                FUN_00049630(iVar21);\n              }" else (compound_statement "{\n                FUN_00049630(iVar21);\n              }" { (expression_statement "FUN_00049630(iVar21);" (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier ))) ;) }))) })) (if_statement "if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" if (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 1) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 1)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 1" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" { (if_statement "if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;" if (parenthesized_expression "(((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0))" ( (binary_expression "((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)" (parenthesized_expression "((*(byte *)(*piVar31 + 5) & 8) != 0)" ( (binary_expression "(*(byte *)(*piVar31 + 5) & 8) != 0" (parenthesized_expression "(*(byte *)(*piVar31 + 5) & 8)" ( (binary_expression "*(byte *)(*piVar31 + 5) & 8" (pointer_expression "*(byte *)(*piVar31 + 5)" * (cast_expression "(byte *)(*piVar31 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 5)" ( (binary_expression "*piVar31 + 5" (pointer_expression "*piVar31" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;) })) (if_statement "if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;" if (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x100) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x100) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x100)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x100" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" identifier = (pointer_expression "*(char **)(*piVar31 + 0x10)" * (cast_expression "(char **)(*piVar31 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0x10)" ( (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (if_statement "if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }" if (parenthesized_expression "(((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               )" ( (binary_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)((int)piVar31 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 0xb) & 8)" ( (binary_expression "*(byte *)((int)piVar31 + 0xb) & 8" (pointer_expression "*(byte *)((int)piVar31 + 0xb)" * (cast_expression "(byte *)((int)piVar31 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 0xb)" ( (binary_expression "(int)piVar31 + 0xb" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar21 = FUN_0001fe30(), iVar21 != 0)" ( (comma_expression "iVar21 = FUN_0001fe30(), iVar21 != 0" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) , (binary_expression "iVar21 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              FUN_00049630(param_5[3]);\n            }" { (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" identifier (argument_list "(param_5[3])" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) ))) ;) })) (if_statement "if (iVar20 == 0) goto LAB_0009adbc;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (expression_statement "cVar15 = *(char *)(iVar20 + uVar35);" (assignment_expression "cVar15 = *(char *)(iVar20 + uVar35)" identifier = (pointer_expression "*(char *)(iVar20 + uVar35)" * (cast_expression "(char *)(iVar20 + uVar35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar35)" ( (binary_expression "iVar20 + uVar35" identifier + identifier) ))))) ;) (expression_statement "cVar14 = FUN_0002e3d0();" (assignment_expression "cVar14 = FUN_0002e3d0()" identifier = (call_expression "FUN_0002e3d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;" if (parenthesized_expression "((cVar14 == 'A') || (cVar15 == 'A'))" ( (binary_expression "(cVar14 == 'A') || (cVar15 == 'A')" (parenthesized_expression "(cVar14 == 'A')" ( (binary_expression "cVar14 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(cVar15 == 'A')" ( (binary_expression "cVar15 == 'A'" identifier == (char_literal "'A'" ' character ')) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (while_statement "while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" while (parenthesized_expression "((byte)(cVar14 + 0x56U) < 2)" ( (binary_expression "(byte)(cVar14 + 0x56U) < 2" (call_expression "(byte)(cVar14 + 0x56U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar14 + 0x56U)" ( (binary_expression "cVar14 + 0x56U" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" { (expression_statement "pcVar10 = *(char **)(pcVar10 + 0xc);" (assignment_expression "pcVar10 = *(char **)(pcVar10 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar10 + 0xc)" * (cast_expression "(char **)(pcVar10 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0xc)" ( (binary_expression "pcVar10 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }" if (parenthesized_expression "(cVar14 == -0x56)" ( (binary_expression "cVar14 == -0x56" identifier == number_literal) )) (compound_statement "{\n                bVar16 = 1;\n              }" { (expression_statement "bVar16 = 1;" (assignment_expression "bVar16 = 1" identifier = number_literal) ;) })) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) })) (if_statement "if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }" if (parenthesized_expression "(cVar14 == -0x53)" ( (binary_expression "cVar14 == -0x53" identifier == number_literal) )) (compound_statement "{\n              cVar14 = pcVar10[2];\n            }" { (expression_statement "cVar14 = pcVar10[2];" (assignment_expression "cVar14 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (switch_statement "switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" switch (parenthesized_expression "(cVar14)" ( identifier )) (compound_statement "{\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" { (case_statement "case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;" case (char_literal "'s'" ' character ') : (expression_statement "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));" (assignment_expression "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1))" identifier = (cast_expression "(bool)(cVar15 == 'B' & (bVar16 ^ 1))" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(cVar15 == 'B' & (bVar16 ^ 1))" ( (binary_expression "cVar15 == 'B' & (bVar16 ^ 1)" (binary_expression "cVar15 == 'B'" identifier == (char_literal "'B'" ' character ')) & (parenthesized_expression "(bVar16 ^ 1)" ( (binary_expression "bVar16 ^ 1" identifier ^ number_literal) ))) )))) ;) (break_statement "break;" break ;)) (case_statement "default:\n              goto LAB_0009adbc;" default : (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (case_statement "case -0x6a:" case number_literal :) (case_statement "case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;" case number_literal : (expression_statement "bVar47 = 'B' < cVar15;" (assignment_expression "bVar47 = 'B' < cVar15" identifier = (binary_expression "'B' < cVar15" (char_literal "'B'" ' character ') < identifier)) ;) (break_statement "break;" break ;)) (case_statement "case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;" case number_literal : (expression_statement "bVar47 = (bool)(bVar16 ^ 1);" (assignment_expression "bVar47 = (bool)(bVar16 ^ 1)" identifier = (cast_expression "(bool)(bVar16 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar16 ^ 1)" ( (binary_expression "bVar16 ^ 1" identifier ^ number_literal) )))) ;) (break_statement "break;" break ;)) (case_statement "case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;" case number_literal : (if_statement "if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;" if (parenthesized_expression "(('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0))" ( (binary_expression "('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)" (parenthesized_expression "('B' < cVar15)" ( (binary_expression "'B' < cVar15" (char_literal "'B'" ' character ') < identifier) )) && (parenthesized_expression "(*(short *)(pcVar10 + 0x20) < 0)" ( (binary_expression "*(short *)(pcVar10 + 0x20) < 0" (pointer_expression "*(short *)(pcVar10 + 0x20)" * (cast_expression "(short *)(pcVar10 + 0x20)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x20)" ( (binary_expression "pcVar10 + 0x20" identifier + number_literal) )))) < number_literal) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) })) (if_statement "if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" if (parenthesized_expression "(bVar47)" ( identifier )) (compound_statement "{\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" { (labeled_statement "LAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;" statement_identifier : (expression_statement "*(undefined1 *)(iVar20 + uVar35) = 0x41;" (assignment_expression "*(undefined1 *)(iVar20 + uVar35) = 0x41" (pointer_expression "*(undefined1 *)(iVar20 + uVar35)" * (cast_expression "(undefined1 *)(iVar20 + uVar35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar35)" ( (binary_expression "iVar20 + uVar35" identifier + identifier) )))) = number_literal) ;)) })) (labeled_statement "LAB_0009adbc:\n            uVar35 = uVar35 + 1;" statement_identifier : (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" identifier = (binary_expression "uVar35 + 1" identifier + number_literal)) ;)) (expression_statement "local_154 = local_154 + 4;" (assignment_expression "local_154 = local_154 + 4" identifier = (binary_expression "local_154 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar45 != uVar35)" ( (binary_expression "uVar45 != uVar35" identifier != identifier) )) ;) })) (if_statement "if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }" if (parenthesized_expression "((uVar6 == 0) || (iVar20 == 0))" ( (binary_expression "(uVar6 == 0) || (iVar20 == 0)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          local_144 = 0;\n        }" { (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_144 = FUN_000300b0();\n        }" else (compound_statement "{\n          local_144 = FUN_000300b0();\n        }" { (expression_statement "local_144 = FUN_000300b0();" (assignment_expression "local_144 = FUN_000300b0()" identifier = (call_expression "FUN_000300b0()" identifier (argument_list "()" ( )))) ;) }))) (if_statement "if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar34 = param_5[4];\n        }" { (expression_statement "iVar34 = param_5[4];" (assignment_expression "iVar34 = param_5[4]" identifier = (subscript_expression "param_5[4]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          iVar34 = param_5[10];\n        }" else (compound_statement "{\n          iVar34 = param_5[10];\n        }" { (expression_statement "iVar34 = param_5[10];" (assignment_expression "iVar34 = param_5[10]" identifier = (subscript_expression "param_5[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" if (parenthesized_expression "(local_120 == (int *)0x0)" ( (binary_expression "local_120 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }" { (if_statement "if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }" { (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" identifier (argument_list "(local_168 + local_118)" ( (binary_expression "local_168 + local_118" identifier + identifier) ))) ;) (expression_statement "local_140 = 1;" (assignment_expression "local_140 = 1" identifier = number_literal) ;) (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "local_154 = 0;" (assignment_expression "local_154 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" else (if_statement "if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (expression_statement "uVar35 = local_118;" (assignment_expression "uVar35 = local_118" identifier = identifier) ;) }) (else_clause "else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" else (compound_statement "{\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" { (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" identifier (argument_list "(local_168 + local_118)" ( (binary_expression "local_168 + local_118" identifier + identifier) ))) ;) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) }))))) }) (else_clause "else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" else (compound_statement "{\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" { (expression_statement "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);" (assignment_expression "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" identifier = (call_expression "(uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(byte *)(local_120 + 3) & 0x28) != 0)" ( (binary_expression "(*(byte *)(local_120 + 3) & 0x28) != 0" (parenthesized_expression "(*(byte *)(local_120 + 3) & 0x28)" ( (binary_expression "*(byte *)(local_120 + 3) & 0x28" (pointer_expression "*(byte *)(local_120 + 3)" * (cast_expression "(byte *)(local_120 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_120 + 3)" ( (binary_expression "local_120 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )))) ;) (expression_statement "pcVar10 = *(char **)(*local_120 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_120 + 0x10)" identifier = (pointer_expression "*(char **)(*local_120 + 0x10)" * (cast_expression "(char **)(*local_120 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_120 + 0x10)" ( (binary_expression "*local_120 + 0x10" (pointer_expression "*local_120" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00095030((uint)uVar7);" (call_expression "FUN_00095030((uint)uVar7)" identifier (argument_list "((uint)uVar7)" ( (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (if_statement "if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_120 + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_120 + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_120 + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_120 + 0xb) & 1" (pointer_expression "*(byte *)((int)local_120 + 0xb)" * (cast_expression "(byte *)((int)local_120 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_120 + 0xb)" ( (binary_expression "(int)local_120 + 0xb" (cast_expression "(int)local_120" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" { (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" ( (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal) + number_literal) )) * number_literal)) )))) ;) })) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" * (cast_expression "(ushort *)(puVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 2)" ( (binary_expression "puVar26 + 2" identifier + number_literal) )))) = (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" * (cast_expression "(uint *)(puVar26 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) = (binary_expression "uVar35 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" { (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (iVar20 != 0) {\n            FUN_0002e510();\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0002e510();\n          }" { (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "uVar35 = uVar7 + local_118;" (assignment_expression "uVar35 = uVar7 + local_118" identifier = (binary_expression "uVar7 + local_118" identifier + identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }" { (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" statement_identifier : (if_statement "if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" if (parenthesized_expression "(1 < iVar21)" ( (binary_expression "1 < iVar21" number_literal < identifier) )) (compound_statement "{\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0009be0e;" goto statement_identifier ;) }))) }) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" else (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009c725;" goto statement_identifier ;) })))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0009be0e:\n        FUN_00049800(iVar20);" statement_identifier : (expression_statement "FUN_00049800(iVar20);" (call_expression "FUN_00049800(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;)) (if_statement "if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" if (parenthesized_expression "((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35))" ( (binary_expression "(*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)" (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) == 0)" ( (binary_expression "*(ushort *)(iVar42 + 0x2a) == 0" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" * (cast_expression "(ushort *)(iVar42 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x2a)" ( (binary_expression "iVar42 + 0x2a" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) != uVar35)" ( (binary_expression "*(ushort *)(iVar42 + 0x2a) != uVar35" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" * (cast_expression "(ushort *)(iVar42 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x2a)" ( (binary_expression "iVar42 + 0x2a" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" { (if_statement "if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }" if (parenthesized_expression "((*(byte *)(iVar42 + 0x26) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar42 + 0x26) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar42 + 0x26) & 4)" ( (binary_expression "*(byte *)(iVar42 + 0x26) & 4" (pointer_expression "*(byte *)(iVar42 + 0x26)" * (cast_expression "(byte *)(iVar42 + 0x26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x26)" ( (binary_expression "iVar42 + 0x26" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (if_statement "if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00068470(iVar34,local_168,uVar35);\n          }" { (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" identifier (argument_list "(iVar34,local_168,uVar35)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" else (compound_statement "{\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" { (expression_statement "FUN_00049630(local_128);" (call_expression "FUN_00049630(local_128)" identifier (argument_list "(local_128)" ( identifier ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" identifier (argument_list "(iVar34,local_168,uVar35)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" identifier (argument_list "(param_2[0x1a] + 2)" ( (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,uVar35 - local_154);" (call_expression "FUN_00068470(iVar34,local_168,uVar35 - local_154)" identifier (argument_list "(iVar34,local_168,uVar35 - local_154)" ( identifier , identifier , (binary_expression "uVar35 - local_154" identifier - identifier) ))) ;) }))) })) (if_statement "if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" if (parenthesized_expression "(local_12c == (int *)0x0)" ( (binary_expression "local_12c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }" { (if_statement "if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" if (parenthesized_expression "(bVar48)" ( identifier )) (compound_statement "{\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" { (if_statement "if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_00049630(local_118 + local_168);\n            }" { (expression_statement "FUN_00049630(local_118 + local_168);" (call_expression "FUN_00049630(local_118 + local_168)" identifier (argument_list "(local_118 + local_168)" ( (binary_expression "local_118 + local_168" identifier + identifier) ))) ;) })) (expression_statement "local_118 = local_118 + 1;" (assignment_expression "local_118 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" else (compound_statement "{\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" { (expression_statement "pcVar10 = *(char **)(*local_12c + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_12c + 0x10)" identifier = (pointer_expression "*(char **)(*local_12c + 0x10)" * (cast_expression "(char **)(*local_12c + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_12c + 0x10)" ( (binary_expression "*local_12c + 0x10" (pointer_expression "*local_12c" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00095030((uint)uVar6);" (call_expression "FUN_00095030((uint)uVar6)" identifier (argument_list "((uint)uVar6)" ( (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" * (cast_expression "(byte *)((int)local_12c + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_12c + 0xb)" ( (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" { (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" ( (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal) + number_literal) )) * number_literal)) )))) ;) })) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" * (cast_expression "(ushort *)(puVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 2)" ( (binary_expression "puVar26 + 2" identifier + number_literal) )))) = (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" * (cast_expression "(uint *)(puVar26 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) = (binary_expression "uVar35 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" { (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" if (parenthesized_expression "(local_144 != 0)" ( (binary_expression "local_144 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" { (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049800(local_144);" (call_expression "FUN_00049800(local_144)" identifier (argument_list "(local_144)" ( identifier ))) ;) })) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "local_118 = uVar6 + local_118;" (assignment_expression "local_118 = uVar6 + local_118" identifier = (binary_expression "uVar6 + local_118" identifier + identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }" { (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;" statement_identifier : (if_statement "if (1 < iVar21) goto LAB_0009bf64;" if (parenthesized_expression "(1 < iVar21)" ( (binary_expression "1 < iVar21" number_literal < identifier) )) (goto_statement "goto LAB_0009bf64;" goto statement_identifier ;))) }) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" else (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009d041;" goto statement_identifier ;) })))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }" statement_identifier : (if_statement "if (iVar20 != 0) {\n          FUN_00023410();\n        }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00023410();\n        }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_144 != 0) {\n          FUN_00023410();\n        }" if (parenthesized_expression "(local_144 != 0)" ( (binary_expression "local_144 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00023410();\n        }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" if (parenthesized_expression "(local_118 != 0)" ( (binary_expression "local_118 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" { (if_statement "if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }" if (parenthesized_expression "(local_128 != 0)" ( (binary_expression "local_128 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(param_2[0x1a] + 3);\n          }" { (expression_statement "FUN_00049630(param_2[0x1a] + 3);" (call_expression "FUN_00049630(param_2[0x1a] + 3)" identifier (argument_list "(param_2[0x1a] + 3)" ( (binary_expression "param_2[0x1a] + 3" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) })) (expression_statement "FUN_00068470(iVar34,local_168,local_118);" (call_expression "FUN_00068470(iVar34,local_168,local_118)" identifier (argument_list "(iVar34,local_168,local_118)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" if (parenthesized_expression "(local_128 != 0)" ( (binary_expression "local_128 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" { (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" identifier (argument_list "(param_2[0x1a] + 2)" ( (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,local_118 + local_140);" (call_expression "FUN_00068470(iVar34,local_168,local_118 + local_140)" identifier (argument_list "(iVar34,local_168,local_118 + local_140)" ( identifier , identifier , (binary_expression "local_118 + local_140" identifier + identifier) ))) ;) })) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" if (parenthesized_expression "((uVar35 & 0x40000) != 0)" ( (binary_expression "(uVar35 & 0x40000) != 0" (parenthesized_expression "(uVar35 & 0x40000)" ( (binary_expression "uVar35 & 0x40000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" { (expression_statement "FUN_00049630(1);" (call_expression "FUN_00049630(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) })) (if_statement "if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" if (parenthesized_expression "(((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0))" ( (binary_expression "((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)" (parenthesized_expression "((uVar35 & 0x40) == 0)" ( (binary_expression "(uVar35 & 0x40) == 0" (parenthesized_expression "(uVar35 & 0x40)" ( (binary_expression "uVar35 & 0x40" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }" { (if_statement "if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" if (parenthesized_expression "((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0)" ( (binary_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80)" ( (binary_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80" (pointer_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24)" * (cast_expression "(byte *)(*(int *)(local_158 + 0xc) + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 0x24)" ( (binary_expression "*(int *)(local_158 + 0xc) + 0x24" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }" { (if_statement "if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))" ( (binary_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0)" ( (binary_expression "(*(ushort *)(param_3 + 10) & 0x400) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x400)" ( (binary_expression "*(ushort *)(param_3 + 10) & 0x400" (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" ( (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))" ( (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x1000)" ( (binary_expression "*(ushort *)(param_3 + 10) & 0x1000" (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" ( (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))" ( (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)" (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" * (cast_expression "(char *)((int)param_3 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x2e)" ( (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(iVar42 + 0x28) == 0)" ( (binary_expression "*(short *)(iVar42 + 0x28) == 0" (pointer_expression "*(short *)(iVar42 + 0x28)" * (cast_expression "(short *)(iVar42 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x28)" ( (binary_expression "iVar42 + 0x28" identifier + number_literal) )))) == number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" { (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;) (expression_statement "FUN_000493f0(0,iVar20);" (call_expression "FUN_000493f0(0,iVar20)" identifier (argument_list "(0,iVar20)" ( number_literal , identifier ))) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (expression_statement "iVar20 = *param_3;" (assignment_expression "iVar20 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "FUN_000493f0(0,iVar9);" (call_expression "FUN_000493f0(0,iVar9)" identifier (argument_list "(0,iVar9)" ( number_literal , identifier ))) ;) (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009c03e;" goto statement_identifier ;) })) (expression_statement "iVar34 = *(int *)(iVar20 + 0x74);" (assignment_expression "iVar34 = *(int *)(iVar20 + 0x74)" identifier = (pointer_expression "*(int *)(iVar20 + 0x74)" * (cast_expression "(int *)(iVar20 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x74)" ( (binary_expression "iVar20 + 0x74" identifier + number_literal) ))))) ;) (if_statement "if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }" if (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar34 = iVar20;\n            }" { (expression_statement "iVar34 = iVar20;" (assignment_expression "iVar34 = iVar20" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(*(int *)(iVar34 + 0x50) == 0)" ( (binary_expression "*(int *)(iVar34 + 0x50) == 0" (pointer_expression "*(int *)(iVar34 + 0x50)" * (cast_expression "(int *)(iVar34 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x50)" ( (binary_expression "iVar34 + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" { (expression_statement "iVar20 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar20 = *(int *)(local_158 + 0xc)" identifier = (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar31 = (int *)FUN_0004e890();" (assignment_expression "piVar31 = (int *)FUN_0004e890()" identifier = (cast_expression "(int *)FUN_0004e890()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004e890()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" if (parenthesized_expression "(piVar31 != (int *)0x0)" ( (binary_expression "piVar31 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" { (expression_statement "*piVar31 = (int)*(short *)(iVar20 + 0x2a);" (assignment_expression "*piVar31 = (int)*(short *)(iVar20 + 0x2a)" (pointer_expression "*piVar31" * identifier) = (cast_expression "(int)*(short *)(iVar20 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar20 + 0x2a)" * (cast_expression "(short *)(iVar20 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x2a)" ( (binary_expression "iVar20 + 0x2a" identifier + number_literal) )))))) ;) (expression_statement "uVar32 = *(ushort *)(local_158 + 0x34);" (assignment_expression "uVar32 = *(ushort *)(local_158 + 0x34)" identifier = (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" if (parenthesized_expression "(1 < uVar32)" ( (binary_expression "1 < uVar32" number_literal < identifier) )) (compound_statement "{\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" { (expression_statement "iVar34 = *(int *)(local_158 + 4);" (assignment_expression "iVar34 = *(int *)(local_158 + 4)" identifier = (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);" do (compound_statement "{\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  }" { (expression_statement "sVar17 = *(short *)(iVar34 + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(iVar34 + iVar21 * 2)" identifier = (pointer_expression "*(short *)(iVar34 + iVar21 * 2)" * (cast_expression "(short *)(iVar34 + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + iVar21 * 2)" ( (binary_expression "iVar34 + iVar21 * 2" identifier + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" if (parenthesized_expression "((*(byte *)(iVar20 + 0x24) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar20 + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar20 + 0x24) & 0x20)" ( (binary_expression "*(byte *)(iVar20 + 0x24) & 0x20" (pointer_expression "*(byte *)(iVar20 + 0x24)" * (cast_expression "(byte *)(iVar20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x24)" ( (binary_expression "iVar20 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }" { (if_statement "if (-1 < sVar17) goto LAB_0009d40b;" if (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) (goto_statement "goto LAB_0009d40b;" goto statement_identifier ;)) }) (else_clause "else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" else (if_statement "if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" if (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) (compound_statement "{\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" { (expression_statement "sVar17 = FUN_00025700();" (assignment_expression "sVar17 = FUN_00025700()" identifier = (call_expression "FUN_00025700()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;" statement_identifier : (expression_statement "piVar31[sVar17 + 1] = iVar21;" (assignment_expression "piVar31[sVar17 + 1] = iVar21" (subscript_expression "piVar31[sVar17 + 1]" identifier [ (binary_expression "sVar17 + 1" identifier + number_literal) ]) = identifier) ;)) })))) }) while (parenthesized_expression "(uVar32 - 1 != iVar21)" ( (binary_expression "uVar32 - 1 != iVar21" (binary_expression "uVar32 - 1" identifier - number_literal) != identifier) )) ;) })) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) })) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (if_statement "if (*param_5 == 0) goto LAB_0009c8ce;" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (goto_statement "goto LAB_0009c8ce;" goto statement_identifier ;)) }) (else_clause "else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" else (compound_statement "{\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" { (if_statement "if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" if (parenthesized_expression "(iVar9 != iVar41)" ( (binary_expression "iVar9 != iVar41" identifier != identifier) )) (compound_statement "{\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" { (expression_statement "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);" (assignment_expression "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 8)" * (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 8)" ( (binary_expression "*(int *)(local_158 + 0xc) + 8" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" { (labeled_statement "LAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" statement_identifier : (if_statement "if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" if (parenthesized_expression "((*(byte *)(iVar20 + 0x37) & 3) != 2)" ( (binary_expression "(*(byte *)(iVar20 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar20 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar20 + 0x37) & 3" (pointer_expression "*(byte *)(iVar20 + 0x37)" * (cast_expression "(byte *)(iVar20 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x37)" ( (binary_expression "iVar20 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009c960;" goto statement_identifier ;))) (expression_statement "iVar34 = FUN_00025510();" (assignment_expression "iVar34 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" if (parenthesized_expression "(*(short *)(iVar20 + 0x32) == 0)" ( (binary_expression "*(short *)(iVar20 + 0x32) == 0" (pointer_expression "*(short *)(iVar20 + 0x32)" * (cast_expression "(short *)(iVar20 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x32)" ( (binary_expression "iVar20 + 0x32" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  uVar35 = 0;\n                }" { (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" else (compound_statement "{\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" { (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);" do (compound_statement "{\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  }" { (expression_statement "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" * (cast_expression "(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar20 + 4) + iVar21 * 2)" ( (binary_expression "*(int *)(iVar20 + 4) + iVar21 * 2" (pointer_expression "*(int *)(iVar20 + 4)" * (cast_expression "(int *)(iVar20 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 4)" ( (binary_expression "iVar20 + 4" identifier + number_literal) )))) + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" if (parenthesized_expression "(*(ushort *)(local_158 + 0x34) == 0)" ( (binary_expression "*(ushort *)(local_158 + 0x34) == 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }" { (labeled_statement "LAB_0009c9d1:\n                      uVar35 = 0xffffffff;" statement_identifier : (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" else (compound_statement "{\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" { (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) (if_statement "if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" if (parenthesized_expression "(sVar17 != **(short **)(local_158 + 4))" ( (binary_expression "sVar17 != **(short **)(local_158 + 4)" identifier != (pointer_expression "**(short **)(local_158 + 4)" * (pointer_expression "*(short **)(local_158 + 4)" * (cast_expression "(short **)(local_158 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))))) )) (compound_statement "{\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" { (do_statement "do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);" do (compound_statement "{\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        }" { (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" identifier = (binary_expression "uVar35 + 1" identifier + number_literal)) ;) (if_statement "if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;" if (parenthesized_expression "(uVar35 == *(ushort *)(local_158 + 0x34))" ( (binary_expression "uVar35 == *(ushort *)(local_158 + 0x34)" identifier == (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0009c9d1;" goto statement_identifier ;)) }) while (parenthesized_expression "(sVar17 != (*(short **)(local_158 + 4))[uVar35])" ( (binary_expression "sVar17 != (*(short **)(local_158 + 4))[uVar35]" identifier != (subscript_expression "(*(short **)(local_158 + 4))[uVar35]" (parenthesized_expression "(*(short **)(local_158 + 4))" ( (pointer_expression "*(short **)(local_158 + 4)" * (cast_expression "(short **)(local_158 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) )) [ identifier ])) )) ;) (expression_statement "uVar35 = (uint)(short)uVar35;" (assignment_expression "uVar35 = (uint)(short)uVar35" identifier = (cast_expression "(uint)(short)uVar35" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar35" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "iVar22 = iVar34 + iVar21;" (assignment_expression "iVar22 = iVar34 + iVar21" identifier = (binary_expression "iVar34 + iVar21" identifier + identifier)) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000493f0(uVar35,iVar22);" (call_expression "FUN_000493f0(uVar35,iVar22)" identifier (argument_list "(uVar35,iVar22)" ( identifier , identifier ))) ;) (expression_statement "uVar35 = (uint)*(ushort *)(iVar20 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar20 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar20 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar20 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x32)" ( (binary_expression "iVar20 + 0x32" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar21 < (int)uVar35)" ( (binary_expression "iVar21 < (int)uVar35" identifier < (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (expression_statement "FUN_00068470(iVar40,iVar34,uVar35);" (call_expression "FUN_00068470(iVar40,iVar34,uVar35)" identifier (argument_list "(iVar40,iVar34,uVar35)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (labeled_statement "LAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar12 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar12 = (code *)invalidInstructionException();" (assignment_expression "pcVar12 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" statement_identifier : (if_statement "if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" { (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009c049;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c8ce:\n              bVar48 = false;" statement_identifier : (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;)) (goto_statement "goto LAB_0009c1d7;" goto statement_identifier ;) }))) }))) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) }) (else_clause "else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" else (compound_statement "{\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" { (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" identifier = true) ;) (labeled_statement "LAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" statement_identifier : (if_statement "if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" { (labeled_statement "LAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);" statement_identifier : (expression_statement "iVar20 = *(int *)(local_158 + 0x28);" (assignment_expression "iVar20 = *(int *)(local_158 + 0x28)" identifier = (pointer_expression "*(int *)(local_158 + 0x28)" * (cast_expression "(int *)(local_158 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x28)" ( (binary_expression "local_158 + 0x28" identifier + number_literal) ))))) ;)) (if_statement "if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" if (parenthesized_expression "((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0))" ( (binary_expression "(iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)" (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(byte *)(local_158 + 0x38) & 4) != 0)" ( (binary_expression "(*(byte *)(local_158 + 0x38) & 4) != 0" (parenthesized_expression "(*(byte *)(local_158 + 0x38) & 4)" ( (binary_expression "*(byte *)(local_158 + 0x38) & 4" (pointer_expression "*(byte *)(local_158 + 0x38)" * (cast_expression "(byte *)(local_158 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x38)" ( (binary_expression "local_158 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" { (expression_statement "iVar34 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar34 = *(int *)(local_158 + 0xc)" identifier = (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) (do_statement "do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);" do (compound_statement "{\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              }" { (expression_statement "*(undefined4 *)((int)local_f0 + uVar35) = 0;" (assignment_expression "*(undefined4 *)((int)local_f0 + uVar35) = 0" (pointer_expression "*(undefined4 *)((int)local_f0 + uVar35)" * (cast_expression "(undefined4 *)((int)local_f0 + uVar35)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_f0 + uVar35)" ( (binary_expression "(int)local_f0 + uVar35" (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar35 = uVar35 + 4;" (assignment_expression "uVar35 = uVar35 + 4" identifier = (binary_expression "uVar35 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar35 < 0x18)" ( (binary_expression "uVar35 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_d8 = &local_d4;" (assignment_expression "local_d8 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (expression_statement "local_bc = *(undefined4 *)*param_3;" (assignment_expression "local_bc = *(undefined4 *)*param_3" identifier = (pointer_expression "*(undefined4 *)*param_3" * (cast_expression "(undefined4 *)*param_3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" identifier = (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = iVar9;" (assignment_expression "local_d0 = iVar9" identifier = identifier) ;) (expression_statement "local_cc = iVar41;" (assignment_expression "local_cc = iVar41" identifier = identifier) ;) (expression_statement "local_c0 = param_3;" (assignment_expression "local_c0 = param_3" identifier = identifier) ;) (if_statement "if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" if (parenthesized_expression "(*(ushort *)(local_158 + 0x34) != 0)" ( (binary_expression "*(ushort *)(local_158 + 0x34) != 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" { (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);" do (compound_statement "{\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                }" { (expression_statement "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" * (cast_expression "(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 4) + iVar21 * 2)" ( (binary_expression "*(int *)(local_158 + 4) + iVar21 * 2" (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar22 = (int)sVar17;" (assignment_expression "iVar22 = (int)sVar17" identifier = (cast_expression "(int)sVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" if (parenthesized_expression "(sVar17 == -2)" ( (binary_expression "sVar17 == -2" identifier == number_literal) )) (compound_statement "{\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }" { (expression_statement "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);" (assignment_expression "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10)" identifier = (pointer_expression "*(int *)(iVar20 + 4 + iVar21 * 0x10)" * (cast_expression "(int *)(iVar20 + 4 + iVar21 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 4 + iVar21 * 0x10)" ( (binary_expression "iVar20 + 4 + iVar21 * 0x10" (binary_expression "iVar20 + 4" identifier + number_literal) + (binary_expression "iVar21 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "local_a4 = CONCAT22(local_a4._2_2_,1);" (assignment_expression "local_a4 = CONCAT22(local_a4._2_2_,1)" identifier = (call_expression "CONCAT22(local_a4._2_2_,1)" identifier (argument_list "(local_a4._2_2_,1)" ( (field_expression "local_a4._2_2_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_a0 = (int *)0x0;" (assignment_expression "local_a0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0 = FUN_0001fe20;" (assignment_expression "local_b0 = FUN_0001fe20" identifier = identifier) ;) (expression_statement "local_b4 = FUN_0002a790;" (assignment_expression "local_b4 = FUN_0002a790" identifier = identifier) ;) (if_statement "if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" if (parenthesized_expression "((short)local_a4 == 0)" ( (binary_expression "(short)local_a4 == 0" (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) == number_literal) )) (compound_statement "{\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" { (expression_statement "pcVar12 = FUN_00061900;" (assignment_expression "pcVar12 = FUN_00061900" identifier = identifier) ;) (expression_statement "iVar22 = local_c4;" (assignment_expression "iVar22 = local_c4" identifier = identifier) ;) (goto_statement "goto LAB_0009c17b;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009c1b2;" goto statement_identifier ;) })) }) (else_clause "else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" else (if_statement "if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" if (parenthesized_expression "((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0))" ( (binary_expression "(-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) && (parenthesized_expression "(iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" ( (comma_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0" (assignment_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14" identifier = (binary_expression "*(int *)(iVar34 + 4) + iVar22 * 0x14" (pointer_expression "*(int *)(iVar34 + 4)" * (cast_expression "(int *)(iVar34 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 4)" ( (binary_expression "iVar34 + 4" identifier + number_literal) )))) + (binary_expression "iVar22 * 0x14" identifier * number_literal))) , (binary_expression "(*(byte *)(iVar43 + 0x10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar43 + 0x10) & 0x20)" ( (binary_expression "*(byte *)(iVar43 + 0x10) & 0x20" (pointer_expression "*(byte *)(iVar43 + 0x10)" * (cast_expression "(byte *)(iVar43 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 0x10)" ( (binary_expression "iVar43 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" { (expression_statement "iVar43 = *(int *)(iVar43 + 8);" (assignment_expression "iVar43 = *(int *)(iVar43 + 8)" identifier = (pointer_expression "*(int *)(iVar43 + 8)" * (cast_expression "(int *)(iVar43 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 8)" ( (binary_expression "iVar43 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = FUN_00032b10;" (assignment_expression "pcVar12 = FUN_00032b10" identifier = identifier) ;) (if_statement "if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" if (parenthesized_expression "(iVar43 != 0)" ( (binary_expression "iVar43 != 0" identifier != number_literal) )) (compound_statement "{\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );" do (compound_statement "{\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      }" { (expression_statement "uVar35 = (uint)*(byte *)(iVar43 + iVar27);" (assignment_expression "uVar35 = (uint)*(byte *)(iVar43 + iVar27)" identifier = (binary_expression "(uint)*(byte *)(iVar43 + iVar27)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar43 + iVar27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + iVar27)" ( (binary_expression "iVar43 + iVar27" identifier + identifier) ))))) ;) (if_statement "if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" if (parenthesized_expression "(uVar35 == (byte)"BINARY"[iVar27])" ( (binary_expression "uVar35 == (byte)"BINARY"[iVar27]" identifier == (cast_expression "(byte)"BINARY"[iVar27]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" " string_content ") [ identifier ]))) )) (compound_statement "{\n                          if (uVar35 == 0) break;\n                        }" { (if_statement "if (uVar35 == 0) break;" if (parenthesized_expression "(uVar35 == 0)" ( (binary_expression "uVar35 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" else (if_statement "if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" if (parenthesized_expression "((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])" ( (binary_expression "(&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (subscript_expression "(&DAT_000dc6c0)[uVar35]" (parenthesized_expression "(&DAT_000dc6c0)" ( (pointer_expression "&DAT_000dc6c0" & identifier) )) [ identifier ]) != (subscript_expression "(&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (parenthesized_expression "(&DAT_000dc6c0)" ( (pointer_expression "&DAT_000dc6c0" & identifier) )) [ (cast_expression "(byte)"BINARY"[iVar27]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" " string_content ") [ identifier ])) ])) )) (goto_statement "goto LAB_0009c1bb;" goto statement_identifier ;)))) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0009c17b:\n                    local_c4 = iVar22;" statement_identifier : (expression_statement "local_c4 = iVar22;" (assignment_expression "local_c4 = iVar22" identifier = identifier) ;)) (expression_statement "local_f0[1] = pcVar12;" (assignment_expression "local_f0[1] = pcVar12" (subscript_expression "local_f0[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_c8 = iVar21;" (assignment_expression "local_c8 = iVar21" identifier = identifier) ;) (if_statement "if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }" if (parenthesized_expression "(param_3[4] != 0)" ( (binary_expression "param_3[4] != 0" (subscript_expression "param_3[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                      FUN_0004c8d0();\n                    }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);" statement_identifier : (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" identifier = (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;)) })))) (labeled_statement "LAB_0009c1bb:\n                  iVar21 = iVar21 + 1;" statement_identifier : (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar21 < (int)local_17c)" ( (binary_expression "iVar21 < (int)local_17c" identifier < (cast_expression "(int)local_17c" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) })) (labeled_statement "LAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" statement_identifier : (if_statement "if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" if (parenthesized_expression "(*(int *)(local_158 + 0x24) != 0)" ( (binary_expression "*(int *)(local_158 + 0x24) != 0" (pointer_expression "*(int *)(local_158 + 0x24)" * (cast_expression "(int *)(local_158 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x24)" ( (binary_expression "local_158 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00062f10();\n            }" { (expression_statement "FUN_00062f10();" (call_expression "FUN_00062f10()" identifier (argument_list "()" ( ))) ;) }))) }))) }))) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" if (parenthesized_expression "((uVar35 & 0x1000) == 0)" ( (binary_expression "(uVar35 & 0x1000) == 0" (parenthesized_expression "(uVar35 & 0x1000)" ( (binary_expression "uVar35 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }" { (expression_statement "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';" (assignment_expression "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04'" (pointer_expression "*(char *)((int)param_5 + 0x35)" * (cast_expression "(char *)((int)param_5 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uVar33 == 0) + '\x04'" (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) + (char_literal "'\x04'" ' escape_sequence '))) ;) }) (else_clause "else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" else (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))) (expression_statement "param_5[0xe] = iVar41;" (assignment_expression "param_5[0xe] = iVar41" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;" (assignment_expression "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1" (pointer_expression "*(byte *)((int)param_5 + 0x36)" * (cast_expression "(byte *)((int)param_5 + 0x36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x36)" ( (binary_expression "(int)param_5 + 0x36" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(uVar35 >> 0x10) & 1" (call_expression "(byte)(uVar35 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar35 >> 0x10)" ( (binary_expression "uVar35 >> 0x10" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" if (parenthesized_expression "((uVar35 & 0xf) == 0)" ( (binary_expression "(uVar35 & 0xf) == 0" (parenthesized_expression "(uVar35 & 0xf)" ( (binary_expression "uVar35 & 0xf" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" * (cast_expression "(undefined1 *)((int)param_5 + 0x37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x37)" ( (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (if_statement "if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "(!bVar48)" ( (unary_expression "!bVar48" ! identifier) )) (compound_statement "{\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" { (expression_statement "local_194 = (uint *)0x1;" (assignment_expression "local_194 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" else (compound_statement "{\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" { (expression_statement "iVar41 = **(int **)(iVar42 + 0x30);" (assignment_expression "iVar41 = **(int **)(iVar42 + 0x30)" identifier = (pointer_expression "**(int **)(iVar42 + 0x30)" * (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar42 = FUN_0009a2d0(0,uVar33,iVar20);" (assignment_expression "iVar42 = FUN_0009a2d0(0,uVar33,iVar20)" identifier = (call_expression "FUN_0009a2d0(0,uVar33,iVar20)" identifier (argument_list "(0,uVar33,iVar20)" ( number_literal , identifier , identifier )))) ;) (if_statement "if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }" if (parenthesized_expression "((iVar20 != iVar42) && (iVar20 != 0))" ( (binary_expression "(iVar20 != iVar42) && (iVar20 != 0)" (parenthesized_expression "(iVar20 != iVar42)" ( (binary_expression "iVar20 != iVar42" identifier != identifier) )) && (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) ))) )) (compound_statement "{\n          FUN_000254e0();\n        }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000493f0(param_5[4],iVar42);" (call_expression "FUN_000493f0(param_5[4],iVar42)" identifier (argument_list "(param_5[4],iVar42)" ( (subscript_expression "param_5[4]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0)" ( (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14])" ( (binary_expression "*(uint *)(iVar41 + 0x2c) & param_5[0x14]" (pointer_expression "*(uint *)(iVar41 + 0x2c)" * (cast_expression "(uint *)(iVar41 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x2c)" ( (binary_expression "iVar41 + 0x2c" identifier + number_literal) )))) & (subscript_expression "param_5[0x14]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13])" ( (binary_expression "*(uint *)(iVar41 + 0x28) & param_5[0x13]" (pointer_expression "*(uint *)(iVar41 + 0x28)" * (cast_expression "(uint *)(iVar41 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x28)" ( (binary_expression "iVar41 + 0x28" identifier + number_literal) )))) & (subscript_expression "param_5[0x13]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" { (expression_statement "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;" (assignment_expression "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" * (cast_expression "(ushort *)(iVar41 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 10)" ( (binary_expression "iVar41 + 10" identifier + number_literal) )))) = (binary_expression "*(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" * (cast_expression "(ushort *)(iVar41 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 10)" ( (binary_expression "iVar41 + 10" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" else (compound_statement "{\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" { (expression_statement "uVar35 = (uint)*(ushort *)(iVar42 + 0x28);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar42 + 0x28)" identifier = (binary_expression "(uint)*(ushort *)(iVar42 + 0x28)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar42 + 0x28)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x28)" ( (binary_expression "iVar42 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = FUN_00025510();" (assignment_expression "iVar20 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_154 = param_5[3];" (assignment_expression "local_154 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (if_statement "if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" if (parenthesized_expression "(uVar35 != 0)" ( (binary_expression "uVar35 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" { (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);" do (compound_statement "{\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        }" { (while_statement "while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" { (expression_statement "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);" (assignment_expression "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" * (cast_expression "(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar45 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + uVar45 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar45 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar34 != 0) break;" if (parenthesized_expression "(iVar34 != 0)" ( (binary_expression "iVar34 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0009af14:\n            uVar45 = uVar45 + 1;" statement_identifier : (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" identifier = (binary_expression "uVar45 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar35 == uVar45) goto LAB_0009af4f;" if (parenthesized_expression "(uVar35 == uVar45)" ( (binary_expression "uVar35 == uVar45" identifier == identifier) )) (goto_statement "goto LAB_0009af4f;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" if (parenthesized_expression "((*(byte *)(iVar34 + 0xc) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0xc) & 1)" ( (binary_expression "*(byte *)(iVar34 + 0xc) & 1" (pointer_expression "*(byte *)(iVar34 + 0xc)" * (cast_expression "(byte *)(iVar34 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0xc)" ( (binary_expression "iVar34 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" { (expression_statement "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);" (call_expression "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45)" identifier (argument_list "(uVar45,uVar33,iVar20 + 2 + uVar45)" ( identifier , identifier , (binary_expression "iVar20 + 2 + uVar45" (binary_expression "iVar20 + 2" identifier + number_literal) + identifier) ))) ;) (expression_statement "local_154 = param_5[4];" (assignment_expression "local_154 = param_5[4]" identifier = (subscript_expression "param_5[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0009af14;" goto statement_identifier ;) })) (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" identifier = (binary_expression "uVar45 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) while (parenthesized_expression "(uVar35 != uVar45)" ( (binary_expression "uVar35 != uVar45" identifier != identifier) )) ;) })) (labeled_statement "LAB_0009af4f:\n      FUN_00049630(iVar20);" statement_identifier : (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;)) (expression_statement "FUN_00049630(iVar20 + 1);" (call_expression "FUN_00049630(iVar20 + 1)" identifier (argument_list "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) ))) ;) (expression_statement "cVar15 = *(char *)(iVar42 + 0x1c);" (assignment_expression "cVar15 = *(char *)(iVar42 + 0x1c)" identifier = (pointer_expression "*(char *)(iVar42 + 0x1c)" * (cast_expression "(char *)(iVar42 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "FUN_000493f0(local_154,iVar20);" (call_expression "FUN_000493f0(local_154,iVar20)" identifier (argument_list "(local_154,iVar20)" ( identifier , identifier ))) ;) (expression_statement "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);" (call_expression "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9)" identifier (argument_list "(-(uint)(cVar15 == '\0') | 0xfffffff9)" ( (binary_expression "-(uint)(cVar15 == '\0') | 0xfffffff9" (unary_expression "-(uint)(cVar15 == '\0')" - (call_expression "(uint)(cVar15 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(cVar15 == '\0')" ( (binary_expression "cVar15 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) | number_literal) ))) ;) (expression_statement "*(undefined1 *)(iVar42 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(iVar42 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(iVar42 + 0x1c)" * (cast_expression "(undefined1 *)(iVar42 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ;) (expression_statement "iVar34 = uVar35 * 4;" (assignment_expression "iVar34 = uVar35 * 4" identifier = (binary_expression "uVar35 * 4" identifier * number_literal)) ;) (expression_statement "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;" (assignment_expression "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (pointer_expression "*(byte *)((int)param_5 + 0x35)" * (cast_expression "(byte *)((int)param_5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (parenthesized_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U)" ( (binary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U" (unary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0')" - (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\0')" ( (binary_expression "*(char *)((int)param_3 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" * (cast_expression "(char *)((int)param_3 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x2e)" ( (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) & number_literal) )) + number_literal)) ;) (expression_statement "local_184 = param_5[0x10];" (assignment_expression "local_184 = param_5[0x10]" identifier = (subscript_expression "param_5[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (for_statement "for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" for ( ; (binary_expression "uVar35 != 0xffffffff" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" { (while_statement "while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" while (parenthesized_expression "(piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0)" ( (comma_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + iVar34)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + iVar34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + iVar34)" ( (binary_expression "*(int *)(iVar42 + 0x30) + iVar34" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + identifier) ))))) , (binary_expression "(*(byte *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(piVar31 + 3) & 1)" ( (binary_expression "*(byte *)(piVar31 + 3) & 1" (pointer_expression "*(byte *)(piVar31 + 3)" * (cast_expression "(byte *)(piVar31 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal)) )) (compound_statement "{\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" { (expression_statement "local_184 = local_184 + -1;" (assignment_expression "local_184 = local_184 + -1" identifier = (binary_expression "local_184 + -1" identifier + number_literal)) ;) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;" if (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" ( (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" ( (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" ( (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" * (cast_expression "(ushort *)(iVar42 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1e)" ( (binary_expression "iVar42 + 0x1e" identifier + number_literal) )))) >> (parenthesized_expression "(uVar35 & 0x1f)" ( (binary_expression "uVar35 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b18a;" goto statement_identifier ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0xc);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0xc)" identifier = (pointer_expression "*(char **)(*piVar31 + 0xc)" * (cast_expression "(char **)(*piVar31 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0xc)" ( (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" if (parenthesized_expression "(cVar15 != -0x52)" ( (binary_expression "cVar15 != -0x52" identifier != number_literal) )) (compound_statement "{\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" { (if_statement "if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009bc51;" goto statement_identifier ;) })) (labeled_statement "LAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" statement_identifier : (if_statement "if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" if (parenthesized_expression "(*(char *)(iVar41 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar41 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" * (cast_expression "(char *)(iVar41 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x4d)" ( (binary_expression "iVar41 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" { (expression_statement "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);" (assignment_expression "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4)" identifier = (pointer_expression "*(int *)(local_184 * 0x14 + param_5[0x11] + 4)" * (cast_expression "(int *)(local_184 * 0x14 + param_5[0x11] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_184 * 0x14 + param_5[0x11] + 4)" ( (binary_expression "local_184 * 0x14 + param_5[0x11] + 4" (binary_expression "local_184 * 0x14 + param_5[0x11]" (binary_expression "local_184 * 0x14" identifier * number_literal) + (subscript_expression "param_5[0x11]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar21 = param_2[0x1a] + -1;\n              }" { (expression_statement "iVar21 = param_2[0x1a] + -1;" (assignment_expression "iVar21 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar21 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar21 * 0x14)" ( (binary_expression "param_2[0x19] + iVar21 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));" (call_expression "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" identifier (argument_list "(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" ( (pointer_expression "*(undefined4 *)(puVar26 + 8)" * (cast_expression "(undefined4 *)(puVar26 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(puVar26 + 0xc)" * (cast_expression "(undefined4 *)(puVar26 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) ))) ;) }))) (expression_statement "iVar21 = FUN_000556e0();" (assignment_expression "iVar21 = FUN_000556e0()" identifier = (call_expression "FUN_000556e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" { (expression_statement "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc)" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" * (cast_expression "(undefined4 *)(iVar21 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0xc)" ( (binary_expression "iVar21 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*piVar31 + 0xc)" * (cast_expression "(undefined4 *)(*piVar31 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0xc)" ( (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_b4 = (code *)0x0;" (assignment_expression "local_b4 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar22 = FUN_0002fd80();" (assignment_expression "iVar22 = FUN_0002fd80()" identifier = (call_expression "FUN_0002fd80()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar21 + 0x10) = iVar22;" (assignment_expression "*(int *)(iVar21 + 0x10) = iVar22" (pointer_expression "*(int *)(iVar21 + 0x10)" * (cast_expression "(int *)(iVar21 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x10)" ( (binary_expression "iVar21 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" { (expression_statement "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;" (assignment_expression "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35" (pointer_expression "*(uint *)(iVar22 + 0x1c)" * (cast_expression "(uint *)(iVar22 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + 0x1c)" ( (binary_expression "iVar22 + 0x1c" identifier + number_literal) )))) = (binary_expression "iVar20 + 2 + uVar35" (binary_expression "iVar20 + 2" identifier + number_literal) + identifier)) ;) (expression_statement "FUN_00092bc0(param_1,iVar21,param_5[6],0x10);" (call_expression "FUN_00092bc0(param_1,iVar21,param_5[6],0x10)" identifier (argument_list "(param_1,iVar21,param_5[6],0x10)" ( identifier , identifier , (subscript_expression "param_5[6]" identifier [ number_literal ]) , number_literal ))) ;) })) (expression_statement "*(undefined4 *)(iVar21 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" * (cast_expression "(undefined4 *)(iVar21 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0xc)" ( (binary_expression "iVar21 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0009b15d;" goto statement_identifier ;) })) (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;" statement_identifier : (if_statement "if (iVar21 == 1) goto LAB_0009b066;" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0009b066;" goto statement_identifier ;))) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ;) (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" identifier = (binary_expression "iVar34 + -4" identifier + number_literal)) ;) (if_statement "if (uVar35 == 0xffffffff) goto LAB_0009b1e0;" if (parenthesized_expression "(uVar35 == 0xffffffff)" ( (binary_expression "uVar35 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;)) })) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }" if (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" ( (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" ( (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" ( (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" * (cast_expression "(ushort *)(iVar42 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1e)" ( (binary_expression "iVar42 + 0x1e" identifier + number_literal) )))) >> (parenthesized_expression "(uVar35 & 0x1f)" ( (binary_expression "uVar35 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0009b18a:\n          FUN_00020250();\n        }" { (labeled_statement "LAB_0009b18a:\n          FUN_00020250();" statement_identifier : (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;)) })) (labeled_statement "LAB_0009b15d:\n        iVar34 = iVar34 + -4;" statement_identifier : (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" identifier = (binary_expression "iVar34 + -4" identifier + number_literal)) ;)) })) }))) (labeled_statement "LAB_0009b1e0:\n    local_158 = 0;" statement_identifier : (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;)) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" else (compound_statement "{\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" { (expression_statement "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));" (call_expression "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20))" identifier (argument_list "(0,*(undefined4 *)(iVar34 + 0x20))" ( number_literal , (pointer_expression "*(undefined4 *)(iVar34 + 0x20)" * (cast_expression "(undefined4 *)(iVar34 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x20)" ( (binary_expression "iVar34 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "iVar41 = FUN_00049630(iVar20);" (assignment_expression "iVar41 = FUN_00049630(iVar20)" identifier = (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier )))) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xb;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xb" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" statement_identifier : (do_statement "do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" do (compound_statement "{\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  }" { (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" identifier = (cast_expression "(int *)param_3[0x17]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (if_statement "if (iVar41 < 1) goto LAB_0009b538;" if (parenthesized_expression "(iVar41 < 1)" ( (binary_expression "iVar41 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0009b538;" goto statement_identifier ;)) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" do (compound_statement "{\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    }" { (while_statement "while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" while (parenthesized_expression "(uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0)" ( (comma_expression "uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" identifier = (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (comma_expression "uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar35 = local_17c" identifier = identifier) , (binary_expression "(uVar32 & 6) != 0" (parenthesized_expression "(uVar32 & 6)" ( (binary_expression "uVar32 & 6" identifier & number_literal) )) != number_literal))) )) (compound_statement "{\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" { (labeled_statement "LAB_0009b2d5:\n        local_17c = uVar35;" statement_identifier : (expression_statement "local_17c = uVar35;" (assignment_expression "local_17c = uVar35" identifier = identifier) ;)) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) (if_statement "if (iVar41 == 0) goto LAB_0009b30a;" if (parenthesized_expression "(iVar41 == 0)" ( (binary_expression "iVar41 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009b30a;" goto statement_identifier ;)) })) (if_statement "if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" if (parenthesized_expression "((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0)" ( (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0" (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0" (parenthesized_expression "(piVar31[0xb] & param_5[0x14])" ( (binary_expression "piVar31[0xb] & param_5[0x14]" (subscript_expression "piVar31[0xb]" identifier [ number_literal ]) & (subscript_expression "param_5[0x14]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(piVar31[10] & param_5[0x13]) == 0" (parenthesized_expression "(piVar31[10] & param_5[0x13])" ( (binary_expression "piVar31[10] & param_5[0x13]" (subscript_expression "piVar31[10]" identifier [ number_literal ]) & (subscript_expression "param_5[0x13]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" { (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (if_statement "if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;" if (parenthesized_expression "(((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0))" ( (binary_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)" (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0)" ( (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" ( (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" * (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" ( (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar42 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar42 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar42 + 4) & 1)" ( (binary_expression "*(byte *)(iVar42 + 4) & 1" (pointer_expression "*(byte *)(iVar42 + 4)" * (cast_expression "(byte *)(iVar42 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 4)" ( (binary_expression "iVar42 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;)) (if_statement "if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;" if (parenthesized_expression "(local_194 == (uint *)0x1)" ( (binary_expression "local_194 == (uint *)0x1" identifier == (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }" { (expression_statement "local_d0 = param_5[1];" (assignment_expression "local_d0 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)&local_b8 + uVar45) = 0;" (assignment_expression "*(undefined4 *)((int)&local_b8 + uVar45) = 0" (pointer_expression "*(undefined4 *)((int)&local_b8 + uVar45)" * (cast_expression "(undefined4 *)((int)&local_b8 + uVar45)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_b8 + uVar45)" ( (binary_expression "(int)&local_b8 + uVar45" (cast_expression "(int)&local_b8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b8" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "uVar45 = uVar45 + 4;" (assignment_expression "uVar45 = uVar45 + 4" identifier = (binary_expression "uVar45 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar45 < 0x18)" ( (binary_expression "uVar45 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_d4 = local_158;" (assignment_expression "local_d4 = local_158" identifier = identifier) ;) (expression_statement "local_b4 = FUN_00025680;" (assignment_expression "local_b4 = FUN_00025680" identifier = identifier) ;) (expression_statement "local_a0 = &local_d4;" (assignment_expression "local_a0 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (if_statement "if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" if (parenthesized_expression "(iVar42 != 0)" ( (binary_expression "iVar42 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" if (parenthesized_expression "((short)local_a4 != 0)" ( (binary_expression "(short)local_a4 != 0" (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) != number_literal) )) (compound_statement "{\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" { (expression_statement "local_17c = 2;" (assignment_expression "local_17c = 2" identifier = number_literal) ;) (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" identifier = identifier) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) })) (expression_statement "uVar32 = *(ushort *)((int)piVar31 + 10);" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" identifier = (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" statement_identifier : (if_statement "if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" if (parenthesized_expression "((uVar32 & 0x1000) != 0)" ( (binary_expression "(uVar32 & 0x1000) != 0" (parenthesized_expression "(uVar32 & 0x1000)" ( (binary_expression "uVar32 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" { (expression_statement "uVar35 = 3;" (assignment_expression "uVar35 = 3" identifier = number_literal) ;) (if_statement "if (local_17c != 0) {\n              uVar35 = local_17c;\n            }" if (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) (compound_statement "{\n              uVar35 = local_17c;\n            }" { (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" identifier = identifier) ;) })) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) }))) }) (else_clause "else if (local_194 != (uint *)0x3) goto LAB_0009b594;" else (if_statement "if (local_194 != (uint *)0x3) goto LAB_0009b594;" if (parenthesized_expression "(local_194 != (uint *)0x3)" ( (binary_expression "local_194 != (uint *)0x3" identifier != (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009b594;" goto statement_identifier ;)))) (if_statement "if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" if (parenthesized_expression "(((uVar32 & 0x200) == 0) || (param_5[0xb] == 0))" ( (binary_expression "((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)" (parenthesized_expression "((uVar32 & 0x200) == 0)" ( (binary_expression "(uVar32 & 0x200) == 0" (parenthesized_expression "(uVar32 & 0x200)" ( (binary_expression "uVar32 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_5[0xb] == 0)" ( (binary_expression "param_5[0xb] == 0" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }" { (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" identifier (argument_list "(param_1,iVar42,iVar40,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" else (compound_statement "{\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" { (expression_statement "iVar20 = FUN_00049630(0);" (assignment_expression "iVar20 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" identifier (argument_list "(param_1,iVar42,iVar40,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) (if_statement "if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" { (if_statement "if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar20 < 0)" ( (binary_expression "iVar20 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar20 = param_2[0x1a] + -1;\n            }" { (expression_statement "iVar20 = param_2[0x1a] + -1;" (assignment_expression "iVar20 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar20 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar20 * 0x14)" ( (binary_expression "param_2[0x19] + iVar20 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) })) }))) (expression_statement "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_0009b30a:\n    local_194 = (uint *)local_17c;" statement_identifier : (expression_statement "local_194 = (uint *)local_17c;" (assignment_expression "local_194 = (uint *)local_17c" identifier = (cast_expression "(uint *)local_17c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }) while (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) ;)) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" identifier = (cast_expression "(int *)param_3[0x17]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (if_statement "if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" if (parenthesized_expression "(0 < iVar41)" ( (binary_expression "0 < iVar41" number_literal < identifier) )) (compound_statement "{\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" { (do_statement "do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" do (compound_statement "{\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    }" { (if_statement "if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))))" ( (binary_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" (parenthesized_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0))" ( (binary_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)" (parenthesized_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))" ( (binary_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)piVar31 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 10) & 6)" ( (binary_expression "*(byte *)((int)piVar31 + 10) & 6" (pointer_expression "*(byte *)((int)piVar31 + 10)" * (cast_expression "(byte *)((int)piVar31 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x82) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x82) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x82)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x82" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x800) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x800) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x800)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x800" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" ( (parenthesized_expression "(piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))" ( (binary_expression "piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" (binary_expression "piVar31[5] == iVar9" (subscript_expression "piVar31[5]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" ( (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" ( (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" * (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" ( (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" { (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "local_70 = 0x83;" (assignment_expression "local_70 = 0x83" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0x100;" (assignment_expression "local_74 = 0x100" identifier = number_literal) ;) (expression_statement "local_72 = 1;" (assignment_expression "local_72 = 1" identifier = number_literal) ;) (expression_statement "local_84 = piVar1;" (assignment_expression "local_84 = piVar1" identifier = identifier) ;) (expression_statement "local_80 = piVar1;" (assignment_expression "local_80 = piVar1" identifier = identifier) ;) (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;) (if_statement "if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" if (parenthesized_expression "(piVar31[7] != -2)" ( (binary_expression "piVar31[7] != -2" (subscript_expression "piVar31[7]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" { (expression_statement "local_3c = (undefined2)piVar31[7];" (assignment_expression "local_3c = (undefined2)piVar31[7]" identifier = (cast_expression "(undefined2)piVar31[7]" ( (type_descriptor "undefined2" type_identifier) ) (subscript_expression "piVar31[7]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" identifier = (cast_expression "(undefined4 *)FUN_00061a10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00061a10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" if (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" { (expression_statement "puVar39 = (undefined4 *)0x0;" (assignment_expression "puVar39 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);" do (compound_statement "{\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            }" { (if_statement "if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" if (parenthesized_expression "((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0)" ( (binary_expression "(param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0" (binary_expression "(param_7 & puVar23[9]) == 0" (parenthesized_expression "(param_7 & puVar23[9])" ( (binary_expression "param_7 & puVar23[9]" identifier & (subscript_expression "puVar23[9]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(param_6 & puVar23[8]) == 0" (parenthesized_expression "(param_6 & puVar23[8])" ( (binary_expression "param_6 & puVar23[8]" identifier & (subscript_expression "puVar23[8]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" { (if_statement "if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;" if (parenthesized_expression "((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))" ( (binary_expression "(puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0)" (parenthesized_expression "(puVar23[9] == 0 && puVar23[8] == 0)" ( (binary_expression "puVar23[9] == 0 && puVar23[8] == 0" (binary_expression "puVar23[9] == 0" (subscript_expression "puVar23[9]" identifier [ number_literal ]) == number_literal) && (binary_expression "puVar23[8] == 0" (subscript_expression "puVar23[8]" identifier [ number_literal ]) == number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar23 + 3) & 0x82) != 0)" ( (binary_expression "(*(byte *)(puVar23 + 3) & 0x82) != 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 0x82)" ( (binary_expression "*(byte *)(puVar23 + 3) & 0x82" (pointer_expression "*(byte *)(puVar23 + 3)" * (cast_expression "(byte *)(puVar23 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 3)" ( (binary_expression "puVar23 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b454;" goto statement_identifier ;)) (if_statement "if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }" if (parenthesized_expression "(puVar39 == (undefined4 *)0x0)" ( (binary_expression "puVar39 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  puVar39 = puVar23;\n                }" { (expression_statement "puVar39 = puVar23;" (assignment_expression "puVar39 = puVar23" identifier = identifier) ;) })) })) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" identifier = (cast_expression "(undefined4 *)FUN_00061a10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00061a10()" identifier (argument_list "()" ( ))))) ;) }) while (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar23 = puVar39;" (assignment_expression "puVar23 = puVar39" identifier = identifier) ;) (if_statement "if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" if (parenthesized_expression "(puVar39 != (undefined4 *)0x0)" ( (binary_expression "puVar39 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" { (labeled_statement "LAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" statement_identifier : (if_statement "if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" if (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 ))" ( (binary_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 10) & 4) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 4)" ( (binary_expression "*(byte *)((int)puVar23 + 10) & 4" (pointer_expression "*(byte *)((int)puVar23 + 10)" * (cast_expression "(byte *)((int)puVar23 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" ( (parenthesized_expression "((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))" ( (binary_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2)" (parenthesized_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0))" ( (comma_expression "piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (assignment_expression "piVar24 = (int *)*puVar23" identifier = (cast_expression "(int *)*puVar23" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar23" * identifier))) , (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 1)" ( (binary_expression "*(byte *)(puVar23 + 3) & 1" (pointer_expression "*(byte *)(puVar23 + 3)" * (cast_expression "(byte *)(puVar23 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 3)" ( (binary_expression "puVar23 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)((int)piVar24 + 5) & 8) == 0)" ( (binary_expression "(*(byte *)((int)piVar24 + 5) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 5) & 8)" ( (binary_expression "*(byte *)((int)piVar24 + 5) & 8" (pointer_expression "*(byte *)((int)piVar24 + 5)" * (cast_expression "(byte *)((int)piVar24 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + 5)" ( (binary_expression "(int)piVar24 + 5" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )))) )) || (parenthesized_expression "(**(int **)(piVar24[5] + 0x1c) < 2)" ( (binary_expression "**(int **)(piVar24[5] + 0x1c) < 2" (pointer_expression "**(int **)(piVar24[5] + 0x1c)" * (pointer_expression "*(int **)(piVar24[5] + 0x1c)" * (cast_expression "(int **)(piVar24[5] + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar24[5] + 0x1c)" ( (binary_expression "piVar24[5] + 0x1c" (subscript_expression "piVar24[5]" identifier [ number_literal ]) + number_literal) ))))) < number_literal) ))) )) ))) )) (compound_statement "{\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" { (expression_statement "local_b8 = *piVar24;" (assignment_expression "local_b8 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "local_b4 = (code *)piVar24[1];" (assignment_expression "local_b4 = (code *)piVar24[1]" identifier = (cast_expression "(code *)piVar24[1]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[1]" identifier [ number_literal ]))) ;) (expression_statement "local_b0 = (code *)piVar24[2];" (assignment_expression "local_b0 = (code *)piVar24[2]" identifier = (cast_expression "(code *)piVar24[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[2]" identifier [ number_literal ]))) ;) (expression_statement "local_a8 = piVar24[4];" (assignment_expression "local_a8 = piVar24[4]" identifier = (subscript_expression "piVar24[4]" identifier [ number_literal ])) ;) (expression_statement "local_a4 = piVar24[5];" (assignment_expression "local_a4 = piVar24[5]" identifier = (subscript_expression "piVar24[5]" identifier [ number_literal ])) ;) (expression_statement "local_a0 = (int *)piVar24[6];" (assignment_expression "local_a0 = (int *)piVar24[6]" identifier = (cast_expression "(int *)piVar24[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[6]" identifier [ number_literal ]))) ;) (expression_statement "local_9c = piVar24[7];" (assignment_expression "local_9c = piVar24[7]" identifier = (subscript_expression "piVar24[7]" identifier [ number_literal ])) ;) (expression_statement "local_98 = piVar24[8];" (assignment_expression "local_98 = piVar24[8]" identifier = (subscript_expression "piVar24[8]" identifier [ number_literal ])) ;) (expression_statement "local_94 = piVar24[9];" (assignment_expression "local_94 = piVar24[9]" identifier = (subscript_expression "piVar24[9]" identifier [ number_literal ])) ;) (expression_statement "local_90 = piVar24[10];" (assignment_expression "local_90 = piVar24[10]" identifier = (subscript_expression "piVar24[10]" identifier [ number_literal ])) ;) (expression_statement "local_8c = piVar24[0xb];" (assignment_expression "local_8c = piVar24[0xb]" identifier = (subscript_expression "piVar24[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_88 = piVar24[0xc];" (assignment_expression "local_88 = piVar24[0xc]" identifier = (subscript_expression "piVar24[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_ac = *(undefined4 *)(iVar42 + 0xc);" (assignment_expression "local_ac = *(undefined4 *)(iVar42 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar42 + 0xc)" * (cast_expression "(undefined4 *)(iVar42 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "FUN_00092bc0(param_1,&local_b8,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,&local_b8,iVar40,0x10)" identifier (argument_list "(param_1,&local_b8,iVar40,0x10)" ( identifier , (pointer_expression "&local_b8" & identifier) , identifier , number_literal ))) ;) }))) })) })) })) })) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" statement_identifier : (if_statement "if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }" { (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" else (compound_statement "{\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" { (expression_statement "param_5[7] = param_2[0x1a];" (assignment_expression "param_5[7] = param_2[0x1a]" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(*param_5);" (call_expression "FUN_00049630(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) ))) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = (undefined4 *)param_3[0x17];" (assignment_expression "puVar23 = (undefined4 *)param_3[0x17]" identifier = (cast_expression "(undefined4 *)param_3[0x17]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" if (parenthesized_expression "(0 < iVar41)" ( (binary_expression "0 < iVar41" number_literal < identifier) )) (compound_statement "{\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" { (expression_statement "iVar42 = 0;" (assignment_expression "iVar42 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);" do (compound_statement "{\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      }" { (if_statement "if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" if (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0))" ( (binary_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 6)" ( (binary_expression "*(byte *)((int)puVar23 + 10) & 6" (pointer_expression "*(byte *)((int)puVar23 + 10)" * (cast_expression "(byte *)((int)puVar23 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" ( (binary_expression "(puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0" (binary_expression "(puVar23[0xb] & param_7) == 0" (parenthesized_expression "(puVar23[0xb] & param_7)" ( (binary_expression "puVar23[0xb] & param_7" (subscript_expression "puVar23[0xb]" identifier [ number_literal ]) & identifier) )) == number_literal) && (binary_expression "(puVar23[10] & param_6) == 0" (parenthesized_expression "(puVar23[10] & param_6)" ( (binary_expression "puVar23[10] & param_6" (subscript_expression "puVar23[10]" identifier [ number_literal ]) & identifier) )) == number_literal)) ))) )) (compound_statement "{\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" { (expression_statement "FUN_00092bc0(param_1,*puVar23,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,*puVar23,iVar40,0x10)" identifier (argument_list "(param_1,*puVar23,iVar40,0x10)" ( identifier , (pointer_expression "*puVar23" * identifier) , identifier , number_literal ))) ;) (expression_statement "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;" (assignment_expression "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" * (cast_expression "(ushort *)((int)puVar23 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" * (cast_expression "(ushort *)((int)puVar23 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) })) (expression_statement "iVar42 = iVar42 + 1;" (assignment_expression "iVar42 = iVar42 + 1" identifier = (binary_expression "iVar42 + 1" identifier + number_literal)) ;) (expression_statement "puVar23 = puVar23 + 0xc;" (assignment_expression "puVar23 = puVar23 + 0xc" identifier = (binary_expression "puVar23 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar42 < iVar41)" ( (binary_expression "iVar42 < iVar41" identifier < identifier) )) ;) })) })))) (labeled_statement "LAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\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_000d1450();\n  }" { comment (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return CONCAT44(param_7,param_6);" return (call_expression "CONCAT44(param_7,param_6)" identifier (argument_list "(param_7,param_6)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);" statement_identifier : (expression_statement "iVar20 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar20 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar20 == 0) goto LAB_0009ca50;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (goto_statement "goto LAB_0009c96b;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n\nBitmask __regparm3\nsqlite3WhereCodeOneLoopStart\n          (Parse *pParse,Vdbe *v,WhereInfo *pWInfo,int iLevel,WhereLevel *pLevel,Bitmask notReady)\n\n{\n  WhereClause *pWC;\n  u32 *puVar1;\n  short *psVar2;\n  byte bVar3;\n  char aff2;\n  ushort uVar4;\n  ushort uVar5;\n  sqlite3 *db;\n  int iVar6;\n  SrcList *pSVar7;\n  Expr *p1;\n  WhereOrInfo *pWVar8;\n  ExprList *pEVar9;\n  Table *pTVar10;\n  Column *pCVar11;\n  LookasideSlot *pLVar12;\n  SrcList *pSVar13;\n  i16 *piVar14;\n  bool bVar15;\n  code *pcVar16;\n  ushort uVar17;\n  bool bVar18;\n  Bitmask BVar19;\n  _func_int_Walker_ptr_Expr_ptr *p_Var20;\n  char cVar21;\n  u8 uVar22;\n  byte bVar23;\n  short sVar24;\n  uint uVar25;\n  int iVar26;\n  char *pcVar27;\n  int iVar28;\n  Expr *p1_00;\n  WhereTerm *pWVar29;\n  int iVar30;\n  Expr *pEVar31;\n  WhereInfo *pWInfo_00;\n  Parse *pPVar32;\n  Op *pOVar33;\n  WhereTerm **ppWVar34;\n  Expr *pEVar35;\n  SrcList *pSVar36;\n  Parse *pPVar37;\n  Expr *pEVar38;\n  SrcList *pTabList;\n  int *piVar39;\n  ushort uVar40;\n  uint uVar41;\n  Expr *pEVar42;\n  sqlite3_context *iEq;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  uint extraout_ECX_01;\n  uint extraout_ECX_02;\n  uint extraout_ECX_03;\n  WhereLevel *pWVar43;\n  int iVar44;\n  u8 *puVar45;\n  uint uVar46;\n  sqlite3_context *p2;\n  sqlite3_context *psVar47;\n  WhereTerm *pWVar48;\n  int iVar49;\n  uint uVar50;\n  Index *pIVar51;\n  Vdbe *pVVar52;\n  int p2_00;\n  uint uVar53;\n  WhereTerm *pWVar54;\n  SrcList_item *pSVar55;\n  undefined4 *puVar56;\n  sqlite3_context *psVar57;\n  int iVar58;\n  undefined4 *puVar59;\n  int in_GS_OFFSET;\n  bool bVar60;\n  Expr *in_stack_fffffe58;\n  Expr *in_stack_fffffe64;\n  int in_stack_fffffe68;\n  WhereLoop *pWVar61;\n  anon_union_4_2_996c0f8d_for_u1 *paVar62;\n  WhereLoop *pWVar63;\n  int local_184;\n  uint local_17c;\n  Expr *local_168;\n  Index *local_158;\n  uint local_154;\n  uint local_148;\n  char *local_144;\n  Expr *local_140;\n  Index *local_13c;\n  int local_138;\n  Expr *local_134;\n  WhereTerm *local_12c;\n  Expr *local_128;\n  WhereTerm *local_120;\n  uint local_118;\n  Walker w;\n  IdxExprTrans x_1;\n  int rTemp;\n  _func_int_Walker_ptr_Expr_ptr *local_b4;\n  anon_union_4_2_443a03b8_for_u local_b0;\n  Expr *local_ac;\n  Expr *local_a8;\n  anon_union_4_2_a01b6dbf_for_x local_a4;\n  anon_union_4_16_1c331a60_for_u local_a0;\n  int local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  AggInfo *local_90;\n  anon_union_8_3_c79b3df9_for_y local_8c;\n  WhereScan scan;\n  u8 aMoveOp [4];\n  Token x;\n  \n  bVar23 = 0;\n  db = pParse->db;\n  pWVar63 = pLevel->pWLoop;\n  uVar25 = (uint)pLevel->iFrom;\n  iVar6 = *(int *)(in_GS_OFFSET + 0x14);\n  pWC = &pWInfo->sWC;\n  pSVar7 = pWInfo->pTabList;\n  p1 = (Expr *)pSVar7->a[uVar25].iCursor;\n  uVar53 = (pWInfo->sMaskSet).n;\n  BVar19 = notReady;\n  if (0 < (int)uVar53) {\n    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }\n    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);\n  }\nLAB_0009a9fc:\n  pLevel->notReady = BVar19;\n  uVar53 = *(uint *)((int)&pWInfo->revMask + 4);\n  BVar19 = pWInfo->revMask;\n  iVar58 = pParse->nLabel + -1;\n  pParse->nLabel = iVar58;\n  pLevel->addrNxt = iVar58;\n  pLevel->addrBrk = iVar58;\n  p2_00 = pParse->nLabel + -1;\n  pParse->nLabel = p2_00;\n  pLevel->addrCont = p2_00;\n  if ((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)) {\n    iVar26 = pParse->nMem + 1;\n    pParse->nMem = iVar26;\n    pLevel->iLeftJoin = iVar26;\n    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);\n  }\n  if (iLevel == 0) {\n    iVar26 = 0;\n  }\n  else {\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }\n  bVar3 = pSVar7->a[uVar25].fg.field_0x1;\n  if ((bVar3 & 0x10) == 0) {\n    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);\n    if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }\n    pEVar42 = (Expr *)(uVar50 & 1);\n    uVar53 = pWVar63->wsFlags;\n    if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\n  else {\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\nLAB_0009b200:\n  do {\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  } while (local_17c != 0);\n  iVar58 = (pWInfo->sWC).nTerm;\n  pWVar54 = (pWInfo->sWC).a;\n  if (0 < iVar58) {\n    paVar62 = &pSVar7->a[uVar25 - 1].u1;\n    do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\n  }\nLAB_0009b538:\n  if (pLevel->iLeftJoin == 0) {\n    notReady = pLevel->notReady;\n  }\n  else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }\nLAB_0009b549:\n  if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return notReady;\nLAB_0009c960:\n  pIVar51 = pIVar51->pNext;\n  if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}\n\n" comment comment (function_definition "Bitmask __regparm3\nsqlite3WhereCodeOneLoopStart\n          (Parse *pParse,Vdbe *v,WhereInfo *pWInfo,int iLevel,WhereLevel *pLevel,Bitmask notReady)\n\n{\n  WhereClause *pWC;\n  u32 *puVar1;\n  short *psVar2;\n  byte bVar3;\n  char aff2;\n  ushort uVar4;\n  ushort uVar5;\n  sqlite3 *db;\n  int iVar6;\n  SrcList *pSVar7;\n  Expr *p1;\n  WhereOrInfo *pWVar8;\n  ExprList *pEVar9;\n  Table *pTVar10;\n  Column *pCVar11;\n  LookasideSlot *pLVar12;\n  SrcList *pSVar13;\n  i16 *piVar14;\n  bool bVar15;\n  code *pcVar16;\n  ushort uVar17;\n  bool bVar18;\n  Bitmask BVar19;\n  _func_int_Walker_ptr_Expr_ptr *p_Var20;\n  char cVar21;\n  u8 uVar22;\n  byte bVar23;\n  short sVar24;\n  uint uVar25;\n  int iVar26;\n  char *pcVar27;\n  int iVar28;\n  Expr *p1_00;\n  WhereTerm *pWVar29;\n  int iVar30;\n  Expr *pEVar31;\n  WhereInfo *pWInfo_00;\n  Parse *pPVar32;\n  Op *pOVar33;\n  WhereTerm **ppWVar34;\n  Expr *pEVar35;\n  SrcList *pSVar36;\n  Parse *pPVar37;\n  Expr *pEVar38;\n  SrcList *pTabList;\n  int *piVar39;\n  ushort uVar40;\n  uint uVar41;\n  Expr *pEVar42;\n  sqlite3_context *iEq;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  uint extraout_ECX_01;\n  uint extraout_ECX_02;\n  uint extraout_ECX_03;\n  WhereLevel *pWVar43;\n  int iVar44;\n  u8 *puVar45;\n  uint uVar46;\n  sqlite3_context *p2;\n  sqlite3_context *psVar47;\n  WhereTerm *pWVar48;\n  int iVar49;\n  uint uVar50;\n  Index *pIVar51;\n  Vdbe *pVVar52;\n  int p2_00;\n  uint uVar53;\n  WhereTerm *pWVar54;\n  SrcList_item *pSVar55;\n  undefined4 *puVar56;\n  sqlite3_context *psVar57;\n  int iVar58;\n  undefined4 *puVar59;\n  int in_GS_OFFSET;\n  bool bVar60;\n  Expr *in_stack_fffffe58;\n  Expr *in_stack_fffffe64;\n  int in_stack_fffffe68;\n  WhereLoop *pWVar61;\n  anon_union_4_2_996c0f8d_for_u1 *paVar62;\n  WhereLoop *pWVar63;\n  int local_184;\n  uint local_17c;\n  Expr *local_168;\n  Index *local_158;\n  uint local_154;\n  uint local_148;\n  char *local_144;\n  Expr *local_140;\n  Index *local_13c;\n  int local_138;\n  Expr *local_134;\n  WhereTerm *local_12c;\n  Expr *local_128;\n  WhereTerm *local_120;\n  uint local_118;\n  Walker w;\n  IdxExprTrans x_1;\n  int rTemp;\n  _func_int_Walker_ptr_Expr_ptr *local_b4;\n  anon_union_4_2_443a03b8_for_u local_b0;\n  Expr *local_ac;\n  Expr *local_a8;\n  anon_union_4_2_a01b6dbf_for_x local_a4;\n  anon_union_4_16_1c331a60_for_u local_a0;\n  int local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  AggInfo *local_90;\n  anon_union_8_3_c79b3df9_for_y local_8c;\n  WhereScan scan;\n  u8 aMoveOp [4];\n  Token x;\n  \n  bVar23 = 0;\n  db = pParse->db;\n  pWVar63 = pLevel->pWLoop;\n  uVar25 = (uint)pLevel->iFrom;\n  iVar6 = *(int *)(in_GS_OFFSET + 0x14);\n  pWC = &pWInfo->sWC;\n  pSVar7 = pWInfo->pTabList;\n  p1 = (Expr *)pSVar7->a[uVar25].iCursor;\n  uVar53 = (pWInfo->sMaskSet).n;\n  BVar19 = notReady;\n  if (0 < (int)uVar53) {\n    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }\n    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);\n  }\nLAB_0009a9fc:\n  pLevel->notReady = BVar19;\n  uVar53 = *(uint *)((int)&pWInfo->revMask + 4);\n  BVar19 = pWInfo->revMask;\n  iVar58 = pParse->nLabel + -1;\n  pParse->nLabel = iVar58;\n  pLevel->addrNxt = iVar58;\n  pLevel->addrBrk = iVar58;\n  p2_00 = pParse->nLabel + -1;\n  pParse->nLabel = p2_00;\n  pLevel->addrCont = p2_00;\n  if ((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)) {\n    iVar26 = pParse->nMem + 1;\n    pParse->nMem = iVar26;\n    pLevel->iLeftJoin = iVar26;\n    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);\n  }\n  if (iLevel == 0) {\n    iVar26 = 0;\n  }\n  else {\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }\n  bVar3 = pSVar7->a[uVar25].fg.field_0x1;\n  if ((bVar3 & 0x10) == 0) {\n    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);\n    if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }\n    pEVar42 = (Expr *)(uVar50 & 1);\n    uVar53 = pWVar63->wsFlags;\n    if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\n  else {\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\nLAB_0009b200:\n  do {\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  } while (local_17c != 0);\n  iVar58 = (pWInfo->sWC).nTerm;\n  pWVar54 = (pWInfo->sWC).a;\n  if (0 < iVar58) {\n    paVar62 = &pSVar7->a[uVar25 - 1].u1;\n    do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\n  }\nLAB_0009b538:\n  if (pLevel->iLeftJoin == 0) {\n    notReady = pLevel->notReady;\n  }\n  else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }\nLAB_0009b549:\n  if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return notReady;\nLAB_0009c960:\n  pIVar51 = pIVar51->pNext;\n  if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "sqlite3WhereCodeOneLoopStart\n          (Parse *pParse,Vdbe *v,WhereInfo *pWInfo,int iLevel,WhereLevel *pLevel,Bitmask notReady)" identifier (parameter_list "(Parse *pParse,Vdbe *v,WhereInfo *pWInfo,int iLevel,WhereLevel *pLevel,Bitmask notReady)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Vdbe *v" type_identifier (pointer_declarator "*v" * identifier)) , (parameter_declaration "WhereInfo *pWInfo" type_identifier (pointer_declarator "*pWInfo" * identifier)) , (parameter_declaration "int iLevel" primitive_type identifier) , (parameter_declaration "WhereLevel *pLevel" type_identifier (pointer_declarator "*pLevel" * identifier)) , (parameter_declaration "Bitmask notReady" type_identifier identifier) ))) (compound_statement "{\n  WhereClause *pWC;\n  u32 *puVar1;\n  short *psVar2;\n  byte bVar3;\n  char aff2;\n  ushort uVar4;\n  ushort uVar5;\n  sqlite3 *db;\n  int iVar6;\n  SrcList *pSVar7;\n  Expr *p1;\n  WhereOrInfo *pWVar8;\n  ExprList *pEVar9;\n  Table *pTVar10;\n  Column *pCVar11;\n  LookasideSlot *pLVar12;\n  SrcList *pSVar13;\n  i16 *piVar14;\n  bool bVar15;\n  code *pcVar16;\n  ushort uVar17;\n  bool bVar18;\n  Bitmask BVar19;\n  _func_int_Walker_ptr_Expr_ptr *p_Var20;\n  char cVar21;\n  u8 uVar22;\n  byte bVar23;\n  short sVar24;\n  uint uVar25;\n  int iVar26;\n  char *pcVar27;\n  int iVar28;\n  Expr *p1_00;\n  WhereTerm *pWVar29;\n  int iVar30;\n  Expr *pEVar31;\n  WhereInfo *pWInfo_00;\n  Parse *pPVar32;\n  Op *pOVar33;\n  WhereTerm **ppWVar34;\n  Expr *pEVar35;\n  SrcList *pSVar36;\n  Parse *pPVar37;\n  Expr *pEVar38;\n  SrcList *pTabList;\n  int *piVar39;\n  ushort uVar40;\n  uint uVar41;\n  Expr *pEVar42;\n  sqlite3_context *iEq;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  uint extraout_ECX_01;\n  uint extraout_ECX_02;\n  uint extraout_ECX_03;\n  WhereLevel *pWVar43;\n  int iVar44;\n  u8 *puVar45;\n  uint uVar46;\n  sqlite3_context *p2;\n  sqlite3_context *psVar47;\n  WhereTerm *pWVar48;\n  int iVar49;\n  uint uVar50;\n  Index *pIVar51;\n  Vdbe *pVVar52;\n  int p2_00;\n  uint uVar53;\n  WhereTerm *pWVar54;\n  SrcList_item *pSVar55;\n  undefined4 *puVar56;\n  sqlite3_context *psVar57;\n  int iVar58;\n  undefined4 *puVar59;\n  int in_GS_OFFSET;\n  bool bVar60;\n  Expr *in_stack_fffffe58;\n  Expr *in_stack_fffffe64;\n  int in_stack_fffffe68;\n  WhereLoop *pWVar61;\n  anon_union_4_2_996c0f8d_for_u1 *paVar62;\n  WhereLoop *pWVar63;\n  int local_184;\n  uint local_17c;\n  Expr *local_168;\n  Index *local_158;\n  uint local_154;\n  uint local_148;\n  char *local_144;\n  Expr *local_140;\n  Index *local_13c;\n  int local_138;\n  Expr *local_134;\n  WhereTerm *local_12c;\n  Expr *local_128;\n  WhereTerm *local_120;\n  uint local_118;\n  Walker w;\n  IdxExprTrans x_1;\n  int rTemp;\n  _func_int_Walker_ptr_Expr_ptr *local_b4;\n  anon_union_4_2_443a03b8_for_u local_b0;\n  Expr *local_ac;\n  Expr *local_a8;\n  anon_union_4_2_a01b6dbf_for_x local_a4;\n  anon_union_4_16_1c331a60_for_u local_a0;\n  int local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  AggInfo *local_90;\n  anon_union_8_3_c79b3df9_for_y local_8c;\n  WhereScan scan;\n  u8 aMoveOp [4];\n  Token x;\n  \n  bVar23 = 0;\n  db = pParse->db;\n  pWVar63 = pLevel->pWLoop;\n  uVar25 = (uint)pLevel->iFrom;\n  iVar6 = *(int *)(in_GS_OFFSET + 0x14);\n  pWC = &pWInfo->sWC;\n  pSVar7 = pWInfo->pTabList;\n  p1 = (Expr *)pSVar7->a[uVar25].iCursor;\n  uVar53 = (pWInfo->sMaskSet).n;\n  BVar19 = notReady;\n  if (0 < (int)uVar53) {\n    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }\n    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);\n  }\nLAB_0009a9fc:\n  pLevel->notReady = BVar19;\n  uVar53 = *(uint *)((int)&pWInfo->revMask + 4);\n  BVar19 = pWInfo->revMask;\n  iVar58 = pParse->nLabel + -1;\n  pParse->nLabel = iVar58;\n  pLevel->addrNxt = iVar58;\n  pLevel->addrBrk = iVar58;\n  p2_00 = pParse->nLabel + -1;\n  pParse->nLabel = p2_00;\n  pLevel->addrCont = p2_00;\n  if ((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)) {\n    iVar26 = pParse->nMem + 1;\n    pParse->nMem = iVar26;\n    pLevel->iLeftJoin = iVar26;\n    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);\n  }\n  if (iLevel == 0) {\n    iVar26 = 0;\n  }\n  else {\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }\n  bVar3 = pSVar7->a[uVar25].fg.field_0x1;\n  if ((bVar3 & 0x10) == 0) {\n    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);\n    if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }\n    pEVar42 = (Expr *)(uVar50 & 1);\n    uVar53 = pWVar63->wsFlags;\n    if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\n  else {\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\nLAB_0009b200:\n  do {\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  } while (local_17c != 0);\n  iVar58 = (pWInfo->sWC).nTerm;\n  pWVar54 = (pWInfo->sWC).a;\n  if (0 < iVar58) {\n    paVar62 = &pSVar7->a[uVar25 - 1].u1;\n    do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\n  }\nLAB_0009b538:\n  if (pLevel->iLeftJoin == 0) {\n    notReady = pLevel->notReady;\n  }\n  else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }\nLAB_0009b549:\n  if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return notReady;\nLAB_0009c960:\n  pIVar51 = pIVar51->pNext;\n  if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" { (declaration "WhereClause *pWC;" type_identifier (pointer_declarator "*pWC" * identifier) ;) (declaration "u32 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char aff2;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "SrcList *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "Expr *p1;" type_identifier (pointer_declarator "*p1" * identifier) ;) (declaration "WhereOrInfo *pWVar8;" type_identifier (pointer_declarator "*pWVar8" * identifier) ;) (declaration "ExprList *pEVar9;" type_identifier (pointer_declarator "*pEVar9" * identifier) ;) (declaration "Table *pTVar10;" type_identifier (pointer_declarator "*pTVar10" * identifier) ;) (declaration "Column *pCVar11;" type_identifier (pointer_declarator "*pCVar11" * identifier) ;) (declaration "LookasideSlot *pLVar12;" type_identifier (pointer_declarator "*pLVar12" * identifier) ;) (declaration "SrcList *pSVar13;" type_identifier (pointer_declarator "*pSVar13" * identifier) ;) (declaration "i16 *piVar14;" type_identifier (pointer_declarator "*piVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "ushort uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "Bitmask BVar19;" type_identifier identifier ;) (declaration "_func_int_Walker_ptr_Expr_ptr *p_Var20;" type_identifier (pointer_declarator "*p_Var20" * identifier) ;) (declaration "char cVar21;" primitive_type identifier ;) (declaration "u8 uVar22;" type_identifier identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "short sVar24;" (sized_type_specifier "short" short) identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "char *pcVar27;" primitive_type (pointer_declarator "*pcVar27" * identifier) ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "Expr *p1_00;" type_identifier (pointer_declarator "*p1_00" * identifier) ;) (declaration "WhereTerm *pWVar29;" type_identifier (pointer_declarator "*pWVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "Expr *pEVar31;" type_identifier (pointer_declarator "*pEVar31" * identifier) ;) (declaration "WhereInfo *pWInfo_00;" type_identifier (pointer_declarator "*pWInfo_00" * identifier) ;) (declaration "Parse *pPVar32;" type_identifier (pointer_declarator "*pPVar32" * identifier) ;) (declaration "Op *pOVar33;" type_identifier (pointer_declarator "*pOVar33" * identifier) ;) (declaration "WhereTerm **ppWVar34;" type_identifier (pointer_declarator "**ppWVar34" * (pointer_declarator "*ppWVar34" * identifier)) ;) (declaration "Expr *pEVar35;" type_identifier (pointer_declarator "*pEVar35" * identifier) ;) (declaration "SrcList *pSVar36;" type_identifier (pointer_declarator "*pSVar36" * identifier) ;) (declaration "Parse *pPVar37;" type_identifier (pointer_declarator "*pPVar37" * identifier) ;) (declaration "Expr *pEVar38;" type_identifier (pointer_declarator "*pEVar38" * identifier) ;) (declaration "SrcList *pTabList;" type_identifier (pointer_declarator "*pTabList" * identifier) ;) (declaration "int *piVar39;" primitive_type (pointer_declarator "*piVar39" * identifier) ;) (declaration "ushort uVar40;" type_identifier identifier ;) (declaration "uint uVar41;" type_identifier identifier ;) (declaration "Expr *pEVar42;" type_identifier (pointer_declarator "*pEVar42" * identifier) ;) (declaration "sqlite3_context *iEq;" type_identifier (pointer_declarator "*iEq" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_ECX_00;" primitive_type identifier ;) (declaration "uint extraout_ECX_01;" type_identifier identifier ;) (declaration "uint extraout_ECX_02;" type_identifier identifier ;) (declaration "uint extraout_ECX_03;" type_identifier identifier ;) (declaration "WhereLevel *pWVar43;" type_identifier (pointer_declarator "*pWVar43" * identifier) ;) (declaration "int iVar44;" primitive_type identifier ;) (declaration "u8 *puVar45;" type_identifier (pointer_declarator "*puVar45" * identifier) ;) (declaration "uint uVar46;" type_identifier identifier ;) (declaration "sqlite3_context *p2;" type_identifier (pointer_declarator "*p2" * identifier) ;) (declaration "sqlite3_context *psVar47;" type_identifier (pointer_declarator "*psVar47" * identifier) ;) (declaration "WhereTerm *pWVar48;" type_identifier (pointer_declarator "*pWVar48" * identifier) ;) (declaration "int iVar49;" primitive_type identifier ;) (declaration "uint uVar50;" type_identifier identifier ;) (declaration "Index *pIVar51;" type_identifier (pointer_declarator "*pIVar51" * identifier) ;) (declaration "Vdbe *pVVar52;" type_identifier (pointer_declarator "*pVVar52" * identifier) ;) (declaration "int p2_00;" primitive_type identifier ;) (declaration "uint uVar53;" type_identifier identifier ;) (declaration "WhereTerm *pWVar54;" type_identifier (pointer_declarator "*pWVar54" * identifier) ;) (declaration "SrcList_item *pSVar55;" type_identifier (pointer_declarator "*pSVar55" * identifier) ;) (declaration "undefined4 *puVar56;" type_identifier (pointer_declarator "*puVar56" * identifier) ;) (declaration "sqlite3_context *psVar57;" type_identifier (pointer_declarator "*psVar57" * identifier) ;) (declaration "int iVar58;" primitive_type identifier ;) (declaration "undefined4 *puVar59;" type_identifier (pointer_declarator "*puVar59" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar60;" primitive_type identifier ;) (declaration "Expr *in_stack_fffffe58;" type_identifier (pointer_declarator "*in_stack_fffffe58" * identifier) ;) (declaration "Expr *in_stack_fffffe64;" type_identifier (pointer_declarator "*in_stack_fffffe64" * identifier) ;) (declaration "int in_stack_fffffe68;" primitive_type identifier ;) (declaration "WhereLoop *pWVar61;" type_identifier (pointer_declarator "*pWVar61" * identifier) ;) (declaration "anon_union_4_2_996c0f8d_for_u1 *paVar62;" type_identifier (pointer_declarator "*paVar62" * identifier) ;) (declaration "WhereLoop *pWVar63;" type_identifier (pointer_declarator "*pWVar63" * identifier) ;) (declaration "int local_184;" primitive_type identifier ;) (declaration "uint local_17c;" type_identifier identifier ;) (declaration "Expr *local_168;" type_identifier (pointer_declarator "*local_168" * identifier) ;) (declaration "Index *local_158;" type_identifier (pointer_declarator "*local_158" * identifier) ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "uint local_148;" type_identifier identifier ;) (declaration "char *local_144;" primitive_type (pointer_declarator "*local_144" * identifier) ;) (declaration "Expr *local_140;" type_identifier (pointer_declarator "*local_140" * identifier) ;) (declaration "Index *local_13c;" type_identifier (pointer_declarator "*local_13c" * identifier) ;) (declaration "int local_138;" primitive_type identifier ;) (declaration "Expr *local_134;" type_identifier (pointer_declarator "*local_134" * identifier) ;) (declaration "WhereTerm *local_12c;" type_identifier (pointer_declarator "*local_12c" * identifier) ;) (declaration "Expr *local_128;" type_identifier (pointer_declarator "*local_128" * identifier) ;) (declaration "WhereTerm *local_120;" type_identifier (pointer_declarator "*local_120" * identifier) ;) (declaration "uint local_118;" type_identifier identifier ;) (declaration "Walker w;" type_identifier identifier ;) (declaration "IdxExprTrans x_1;" type_identifier identifier ;) (declaration "int rTemp;" primitive_type identifier ;) (declaration "_func_int_Walker_ptr_Expr_ptr *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "anon_union_4_2_443a03b8_for_u local_b0;" type_identifier identifier ;) (declaration "Expr *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "Expr *local_a8;" type_identifier (pointer_declarator "*local_a8" * identifier) ;) (declaration "anon_union_4_2_a01b6dbf_for_x local_a4;" type_identifier identifier ;) (declaration "anon_union_4_16_1c331a60_for_u local_a0;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "AggInfo *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "anon_union_8_3_c79b3df9_for_y local_8c;" type_identifier identifier ;) (declaration "WhereScan scan;" type_identifier identifier ;) (declaration "u8 aMoveOp [4];" type_identifier (array_declarator "aMoveOp [4]" identifier [ number_literal ]) ;) (declaration "Token x;" type_identifier identifier ;) (expression_statement "bVar23 = 0;" (assignment_expression "bVar23 = 0" identifier = number_literal) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pWVar63 = pLevel->pWLoop;" (assignment_expression "pWVar63 = pLevel->pWLoop" identifier = (field_expression "pLevel->pWLoop" identifier -> field_identifier)) ;) (expression_statement "uVar25 = (uint)pLevel->iFrom;" (assignment_expression "uVar25 = (uint)pLevel->iFrom" identifier = (cast_expression "(uint)pLevel->iFrom" ( (type_descriptor "uint" type_identifier) ) (field_expression "pLevel->iFrom" identifier -> field_identifier))) ;) (expression_statement "iVar6 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar6 = *(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 "pWC = &pWInfo->sWC;" (assignment_expression "pWC = &pWInfo->sWC" identifier = (pointer_expression "&pWInfo->sWC" & (field_expression "pWInfo->sWC" identifier -> field_identifier))) ;) (expression_statement "pSVar7 = pWInfo->pTabList;" (assignment_expression "pSVar7 = pWInfo->pTabList" identifier = (field_expression "pWInfo->pTabList" identifier -> field_identifier)) ;) (expression_statement "p1 = (Expr *)pSVar7->a[uVar25].iCursor;" (assignment_expression "p1 = (Expr *)pSVar7->a[uVar25].iCursor" identifier = (cast_expression "(Expr *)pSVar7->a[uVar25].iCursor" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar7->a[uVar25].iCursor" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "uVar53 = (pWInfo->sMaskSet).n;" (assignment_expression "uVar53 = (pWInfo->sMaskSet).n" identifier = (field_expression "(pWInfo->sMaskSet).n" (parenthesized_expression "(pWInfo->sMaskSet)" ( (field_expression "pWInfo->sMaskSet" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "BVar19 = notReady;" (assignment_expression "BVar19 = notReady" identifier = identifier) ;) (if_statement "if (0 < (int)uVar53) {\n    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }\n    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);\n  }" if (parenthesized_expression "(0 < (int)uVar53)" ( (binary_expression "0 < (int)uVar53" number_literal < (cast_expression "(int)uVar53" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }\n    BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);\n  }" { (if_statement "if ((Expr *)(pWInfo->sMaskSet).ix[0] == p1) {\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }\n    else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }" if (parenthesized_expression "((Expr *)(pWInfo->sMaskSet).ix[0] == p1)" ( (binary_expression "(Expr *)(pWInfo->sMaskSet).ix[0] == p1" (cast_expression "(Expr *)(pWInfo->sMaskSet).ix[0]" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "(pWInfo->sMaskSet).ix[0]" (field_expression "(pWInfo->sMaskSet).ix" (parenthesized_expression "(pWInfo->sMaskSet)" ( (field_expression "pWInfo->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) == identifier) )) (compound_statement "{\n      uVar50 = 0xfffffffe;\n      uVar53 = 0xffffffff;\n    }" { (expression_statement "uVar50 = 0xfffffffe;" (assignment_expression "uVar50 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "uVar53 = 0xffffffff;" (assignment_expression "uVar53 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }" else (compound_statement "{\n      uVar50 = 0;\n      do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);\n      bVar60 = (uVar41 & 0x20) == 0;\n      uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));\n      uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));\n    }" { (expression_statement "uVar50 = 0;" (assignment_expression "uVar50 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      } while (p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]);" do (compound_statement "{\n        uVar41 = uVar50 + 1;\n        if (uVar53 == uVar41) goto LAB_0009a9fc;\n        iVar58 = uVar50 + 1;\n        uVar50 = uVar41;\n      }" { (expression_statement "uVar41 = uVar50 + 1;" (assignment_expression "uVar41 = uVar50 + 1" identifier = (binary_expression "uVar50 + 1" identifier + number_literal)) ;) (if_statement "if (uVar53 == uVar41) goto LAB_0009a9fc;" if (parenthesized_expression "(uVar53 == uVar41)" ( (binary_expression "uVar53 == uVar41" identifier == identifier) )) (goto_statement "goto LAB_0009a9fc;" goto statement_identifier ;)) (expression_statement "iVar58 = uVar50 + 1;" (assignment_expression "iVar58 = uVar50 + 1" identifier = (binary_expression "uVar50 + 1" identifier + number_literal)) ;) (expression_statement "uVar50 = uVar41;" (assignment_expression "uVar50 = uVar41" identifier = identifier) ;) }) while (parenthesized_expression "(p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58])" ( (binary_expression "p1 != (Expr *)(pWInfo->sMaskSet).ix[iVar58]" identifier != (cast_expression "(Expr *)(pWInfo->sMaskSet).ix[iVar58]" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "(pWInfo->sMaskSet).ix[iVar58]" (field_expression "(pWInfo->sMaskSet).ix" (parenthesized_expression "(pWInfo->sMaskSet)" ( (field_expression "pWInfo->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ identifier ]))) )) ;) (expression_statement "bVar60 = (uVar41 & 0x20) == 0;" (assignment_expression "bVar60 = (uVar41 & 0x20) == 0" identifier = (binary_expression "(uVar41 & 0x20) == 0" (parenthesized_expression "(uVar41 & 0x20)" ( (binary_expression "uVar41 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f));" (assignment_expression "uVar50 = ~((uint)bVar60 << ((byte)uVar41 & 0x1f))" identifier = (unary_expression "~((uint)bVar60 << ((byte)uVar41 & 0x1f))" ~ (parenthesized_expression "((uint)bVar60 << ((byte)uVar41 & 0x1f))" ( (binary_expression "(uint)bVar60 << ((byte)uVar41 & 0x1f)" (cast_expression "(uint)bVar60" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar41 & 0x1f)" ( (binary_expression "(byte)uVar41 & 0x1f" (cast_expression "(byte)uVar41" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f));" (assignment_expression "uVar53 = ~((uint)!bVar60 << ((byte)uVar41 & 0x1f))" identifier = (unary_expression "~((uint)!bVar60 << ((byte)uVar41 & 0x1f))" ~ (parenthesized_expression "((uint)!bVar60 << ((byte)uVar41 & 0x1f))" ( (binary_expression "(uint)!bVar60 << ((byte)uVar41 & 0x1f)" (cast_expression "(uint)!bVar60" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar60" ! identifier)) << (parenthesized_expression "((byte)uVar41 & 0x1f)" ( (binary_expression "(byte)uVar41 & 0x1f" (cast_expression "(byte)uVar41" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) }))) (expression_statement "BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady);" (assignment_expression "BVar19 = CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady)" identifier = (call_expression "CONCAT44(uVar53 & notReady._4_4_,uVar50 & (uint)notReady)" identifier (argument_list "(uVar53 & notReady._4_4_,uVar50 & (uint)notReady)" ( (binary_expression "uVar53 & notReady._4_4_" identifier & (field_expression "notReady._4_4_" identifier . field_identifier)) , (binary_expression "uVar50 & (uint)notReady" identifier & (cast_expression "(uint)notReady" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) })) (labeled_statement "LAB_0009a9fc:\n  pLevel->notReady = BVar19;" statement_identifier : (expression_statement "pLevel->notReady = BVar19;" (assignment_expression "pLevel->notReady = BVar19" (field_expression "pLevel->notReady" identifier -> field_identifier) = identifier) ;)) (expression_statement "uVar53 = *(uint *)((int)&pWInfo->revMask + 4);" (assignment_expression "uVar53 = *(uint *)((int)&pWInfo->revMask + 4)" identifier = (pointer_expression "*(uint *)((int)&pWInfo->revMask + 4)" * (cast_expression "(uint *)((int)&pWInfo->revMask + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWInfo->revMask + 4)" ( (binary_expression "(int)&pWInfo->revMask + 4" (cast_expression "(int)&pWInfo->revMask" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWInfo->revMask" & (field_expression "pWInfo->revMask" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "BVar19 = pWInfo->revMask;" (assignment_expression "BVar19 = pWInfo->revMask" identifier = (field_expression "pWInfo->revMask" identifier -> field_identifier)) ;) (expression_statement "iVar58 = pParse->nLabel + -1;" (assignment_expression "iVar58 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar58;" (assignment_expression "pParse->nLabel = iVar58" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->addrNxt = iVar58;" (assignment_expression "pLevel->addrNxt = iVar58" (field_expression "pLevel->addrNxt" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->addrBrk = iVar58;" (assignment_expression "pLevel->addrBrk = iVar58" (field_expression "pLevel->addrBrk" identifier -> field_identifier) = identifier) ;) (expression_statement "p2_00 = pParse->nLabel + -1;" (assignment_expression "p2_00 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = p2_00;" (assignment_expression "pParse->nLabel = p2_00" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->addrCont = p2_00;" (assignment_expression "pLevel->addrCont = p2_00" (field_expression "pLevel->addrCont" identifier -> field_identifier) = identifier) ;) (if_statement "if ((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)) {\n    iVar26 = pParse->nMem + 1;\n    pParse->nMem = iVar26;\n    pLevel->iLeftJoin = iVar26;\n    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);\n  }" if (parenthesized_expression "((pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0))" ( (binary_expression "(pLevel->iFrom != '\0') && ((pSVar7->a[uVar25].fg.jointype & 8) != 0)" (parenthesized_expression "(pLevel->iFrom != '\0')" ( (binary_expression "pLevel->iFrom != '\0'" (field_expression "pLevel->iFrom" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((pSVar7->a[uVar25].fg.jointype & 8) != 0)" ( (binary_expression "(pSVar7->a[uVar25].fg.jointype & 8) != 0" (parenthesized_expression "(pSVar7->a[uVar25].fg.jointype & 8)" ( (binary_expression "pSVar7->a[uVar25].fg.jointype & 8" (field_expression "pSVar7->a[uVar25].fg.jointype" (field_expression "pSVar7->a[uVar25].fg" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    iVar26 = pParse->nMem + 1;\n    pParse->nMem = iVar26;\n    pLevel->iLeftJoin = iVar26;\n    sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);\n  }" { (expression_statement "iVar26 = pParse->nMem + 1;" (assignment_expression "iVar26 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar26;" (assignment_expression "pParse->nMem = iVar26" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->iLeftJoin = iVar26;" (assignment_expression "pLevel->iLeftJoin = iVar26" (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,0,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,0,iVar26,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (iLevel == 0) {\n    iVar26 = 0;\n  }\n  else {\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }" if (parenthesized_expression "(iLevel == 0)" ( (binary_expression "iLevel == 0" identifier == number_literal) )) (compound_statement "{\n    iVar26 = 0;\n  }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }" else (compound_statement "{\n    iVar26 = iLevel;\n    if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }\n  }" { (expression_statement "iVar26 = iLevel;" (assignment_expression "iVar26 = iLevel" identifier = identifier) ;) (if_statement "if (pWInfo->a[iLevel].iLeftJoin == 0) {\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }" if (parenthesized_expression "(pWInfo->a[iLevel].iLeftJoin == 0)" ( (binary_expression "pWInfo->a[iLevel].iLeftJoin == 0" (field_expression "pWInfo->a[iLevel].iLeftJoin" (subscript_expression "pWInfo->a[iLevel]" (field_expression "pWInfo->a" identifier -> field_identifier) [ identifier ]) . field_identifier) == number_literal) )) (compound_statement "{\n      pWVar43 = pWInfo->a + iLevel + -1;\n      do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);\n    }" { (expression_statement "pWVar43 = pWInfo->a + iLevel + -1;" (assignment_expression "pWVar43 = pWInfo->a + iLevel + -1" identifier = (binary_expression "pWInfo->a + iLevel + -1" (binary_expression "pWInfo->a + iLevel" (field_expression "pWInfo->a" identifier -> field_identifier) + identifier) + number_literal)) ;) (do_statement "do {\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      } while (*piVar39 == 0);" do (compound_statement "{\n        iVar26 = iVar26 + -1;\n        if (iVar26 == 0) break;\n        piVar39 = &pWVar43->iLeftJoin;\n        pWVar43 = pWVar43 + -1;\n      }" { (expression_statement "iVar26 = iVar26 + -1;" (assignment_expression "iVar26 = iVar26 + -1" identifier = (binary_expression "iVar26 + -1" identifier + number_literal)) ;) (if_statement "if (iVar26 == 0) break;" if (parenthesized_expression "(iVar26 == 0)" ( (binary_expression "iVar26 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar39 = &pWVar43->iLeftJoin;" (assignment_expression "piVar39 = &pWVar43->iLeftJoin" identifier = (pointer_expression "&pWVar43->iLeftJoin" & (field_expression "pWVar43->iLeftJoin" identifier -> field_identifier))) ;) (expression_statement "pWVar43 = pWVar43 + -1;" (assignment_expression "pWVar43 = pWVar43 + -1" identifier = (binary_expression "pWVar43 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar39 == 0)" ( (binary_expression "*piVar39 == 0" (pointer_expression "*piVar39" * identifier) == number_literal) )) ;) })) }))) (expression_statement "bVar3 = pSVar7->a[uVar25].fg.field_0x1;" (assignment_expression "bVar3 = pSVar7->a[uVar25].fg.field_0x1" identifier = (field_expression "pSVar7->a[uVar25].fg.field_0x1" (field_expression "pSVar7->a[uVar25].fg" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar3 & 0x10) == 0) {\n    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);\n    if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }\n    pEVar42 = (Expr *)(uVar50 & 1);\n    uVar53 = pWVar63->wsFlags;\n    if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }\n  else {\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }" if (parenthesized_expression "((bVar3 & 0x10) == 0)" ( (binary_expression "(bVar3 & 0x10) == 0" (parenthesized_expression "(bVar3 & 0x10)" ( (binary_expression "bVar3 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);\n    if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }\n    pEVar42 = (Expr *)(uVar50 & 1);\n    uVar53 = pWVar63->wsFlags;\n    if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }" { (expression_statement "uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f);" (assignment_expression "uVar50 = (uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f)" identifier = (binary_expression "(uint)BVar19 >> ((byte)iLevel & 0x1f) | uVar53 << 0x20 - ((byte)iLevel & 0x1f)" (binary_expression "(uint)BVar19 >> ((byte)iLevel & 0x1f)" (cast_expression "(uint)BVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((byte)iLevel & 0x1f)" ( (binary_expression "(byte)iLevel & 0x1f" (cast_expression "(byte)iLevel" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "uVar53 << 0x20 - ((byte)iLevel & 0x1f)" identifier << (binary_expression "0x20 - ((byte)iLevel & 0x1f)" number_literal - (parenthesized_expression "((byte)iLevel & 0x1f)" ( (binary_expression "(byte)iLevel & 0x1f" (cast_expression "(byte)iLevel" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) (if_statement "if ((iLevel & 0x20U) != 0) {\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }" if (parenthesized_expression "((iLevel & 0x20U) != 0)" ( (binary_expression "(iLevel & 0x20U) != 0" (parenthesized_expression "(iLevel & 0x20U)" ( (binary_expression "iLevel & 0x20U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar50 = uVar53 >> ((byte)iLevel & 0x1f);\n    }" { (expression_statement "uVar50 = uVar53 >> ((byte)iLevel & 0x1f);" (assignment_expression "uVar50 = uVar53 >> ((byte)iLevel & 0x1f)" identifier = (binary_expression "uVar53 >> ((byte)iLevel & 0x1f)" identifier >> (parenthesized_expression "((byte)iLevel & 0x1f)" ( (binary_expression "(byte)iLevel & 0x1f" (cast_expression "(byte)iLevel" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "pEVar42 = (Expr *)(uVar50 & 1);" (assignment_expression "pEVar42 = (Expr *)(uVar50 & 1)" identifier = (cast_expression "(Expr *)(uVar50 & 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar50 & 1)" ( (binary_expression "uVar50 & 1" identifier & number_literal) )))) ;) (expression_statement "uVar53 = pWVar63->wsFlags;" (assignment_expression "uVar53 = pWVar63->wsFlags" identifier = (field_expression "pWVar63->wsFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar53 & 0x400) == 0) {\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }\n    else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }" if (parenthesized_expression "((uVar53 & 0x400) == 0)" ( (binary_expression "(uVar53 & 0x400) == 0" (parenthesized_expression "(uVar53 & 0x400)" ( (binary_expression "uVar53 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }\n    }" { (if_statement "if (((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)) {\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }\n      else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }" if (parenthesized_expression "(((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0))" ( (binary_expression "((uVar53 & 0x100) == 0) || ((uVar53 & 5) == 0)" (parenthesized_expression "((uVar53 & 0x100) == 0)" ( (binary_expression "(uVar53 & 0x100) == 0" (parenthesized_expression "(uVar53 & 0x100)" ( (binary_expression "uVar53 & 0x100" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar53 & 5) == 0)" ( (binary_expression "(uVar53 & 5) == 0" (parenthesized_expression "(uVar53 & 5)" ( (binary_expression "uVar53 & 5" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        iVar26 = pWInfo->a[iVar26].addrBrk;\n        if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }\n        if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar40 = (pWVar63->u).btree.nTop;\n        uVar4 = (pWVar63->u).btree.nEq;\n        local_118 = (uint)uVar4;\n        uVar5 = (pWVar63->u).btree.nBtm;\n        local_158 = (pWVar63->u).btree.pIndex;\n        pEVar31 = (Expr *)pLevel->iIdxCur;\n        if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }\n        pEVar38 = (Expr *)pParse->nMem;\n        local_168 = (Expr *)&pEVar38->affExpr;\n        if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }\n        local_128 = (Expr *)0x0;\n        if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }\n        if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }\n        pVVar52 = pParse->pVdbe;\n        pWVar61 = pLevel->pWLoop;\n        uVar40 = pWVar61->nSkip;\n        iEq = (sqlite3_context *)(uint)uVar40;\n        pIVar51 = (pWVar61->u).btree.pIndex;\n        psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;\n        iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);\n        pParse->nMem = (int)((int)pEVar38 + iVar58);\n        pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);\n        pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);\n        if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }\n        if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }\n        if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }\n        if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }\n        if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }\nLAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);\n        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }\n        if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }\nLAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }\n        if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }\n        pLevel->p2 = v->nOp;\n        if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }\n        if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }\n        if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }\n        uVar53 = pWVar63->wsFlags;\n        if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }\n        pLevel->p1 = (int)pEVar31;\n        pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;\n        if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }\n        if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }\n      }" { (expression_statement "iVar26 = pWInfo->a[iVar26].addrBrk;" (assignment_expression "iVar26 = pWInfo->a[iVar26].addrBrk" identifier = (field_expression "pWInfo->a[iVar26].addrBrk" (subscript_expression "pWInfo->a[iVar26]" (field_expression "pWInfo->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if ((uVar53 & 0x102) == 0x102) {\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }" if (parenthesized_expression "((uVar53 & 0x102) == 0x102)" ( (binary_expression "(uVar53 & 0x102) == 0x102" (parenthesized_expression "(uVar53 & 0x102)" ( (binary_expression "uVar53 & 0x102" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }\n          pLevel->p2 = iVar58;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          pLevel->p1 = (int)p1;\n          in_stack_fffffe58 = pEVar35;\n          goto LAB_0009b200;\n        }" { (if_statement "if ((uVar53 & 0x20) == 0) {\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }\n          else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }" if (parenthesized_expression "((uVar53 & 0x20) == 0)" ( (binary_expression "(uVar53 & 0x20) == 0" (parenthesized_expression "(uVar53 & 0x20)" ( (binary_expression "uVar53 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }\n            if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);\n            iVar58 = v->nOp;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009bcbb:\n            pLevel->op = '\x05';\n          }" { (if_statement "if ((uVar53 & 0x10) != 0) {\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }" if (parenthesized_expression "((uVar53 & 0x10) != 0)" ( (binary_expression "(uVar53 & 0x10) != 0" (parenthesized_expression "(uVar53 & 0x10)" ( (binary_expression "uVar53 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar28 = 0;\n              pWVar54 = (WhereTerm *)0x0;\n              ppWVar34 = pWVar63->aLTerm;\nLAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);\n              if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }\nLAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;\n              builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }\n              sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);\n              if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }\n              goto LAB_0009c32f;\n            }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "pWVar54 = (WhereTerm *)0x0;" (assignment_expression "pWVar54 = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppWVar34 = pWVar63->aLTerm;" (assignment_expression "ppWVar34 = pWVar63->aLTerm" identifier = (field_expression "pWVar63->aLTerm" identifier -> field_identifier)) ;) (labeled_statement "LAB_0009c28b:\n              pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);" statement_identifier : (expression_statement "pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28);" (assignment_expression "pWVar48 = *(WhereTerm **)((int)ppWVar34 + iVar28)" identifier = (pointer_expression "*(WhereTerm **)((int)ppWVar34 + iVar28)" * (cast_expression "(WhereTerm **)((int)ppWVar34 + iVar28)" ( (type_descriptor "WhereTerm **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppWVar34 + iVar28)" ( (binary_expression "(int)ppWVar34 + iVar28" (cast_expression "(int)ppWVar34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;)) (if_statement "if (pEVar42 == (Expr *)0x0) {\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }\n              else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pWVar29 = pWVar48;\n                if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }\n              }" { (expression_statement "pWVar29 = pWVar48;" (assignment_expression "pWVar29 = pWVar48" identifier = identifier) ;) (if_statement "if (pWVar54 == (WhereTerm *)0x0) {\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }" if (parenthesized_expression "(pWVar54 == (WhereTerm *)0x0)" ( (binary_expression "pWVar54 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar28 = 0x25;\n                  goto LAB_0009c549;\n                }" { (expression_statement "iVar28 = 0x25;" (assignment_expression "iVar28 = 0x25" identifier = number_literal) ;) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;) })) }) (else_clause "else {\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }" else (compound_statement "{\n                pWVar29 = pWVar54;\n                pWVar54 = pWVar48;\n                if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;\n              }" { (expression_statement "pWVar29 = pWVar54;" (assignment_expression "pWVar29 = pWVar54" identifier = identifier) ;) (expression_statement "pWVar54 = pWVar48;" (assignment_expression "pWVar54 = pWVar48" identifier = identifier) ;) (if_statement "if (pWVar48 == (WhereTerm *)0x0) goto LAB_0009c544;" if (parenthesized_expression "(pWVar48 == (WhereTerm *)0x0)" ( (binary_expression "pWVar48 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009c544;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0009c2a8:\n              pEVar31 = pWVar54->pExpr;" statement_identifier : (expression_statement "pEVar31 = pWVar54->pExpr;" (assignment_expression "pEVar31 = pWVar54->pExpr" identifier = (field_expression "pWVar54->pExpr" identifier -> field_identifier)) ;)) (expression_statement "builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4);" (call_expression "builtin_memcpy(aMoveOp,"\x19\x17\x16\x18",4)" identifier (argument_list "(aMoveOp,"\x19\x17\x16\x18",4)" ( identifier , (string_literal ""\x19\x17\x16\x18"" " escape_sequence escape_sequence escape_sequence escape_sequence ") , number_literal ))) ;) (expression_statement "pEVar38 = pEVar31->pRight;" (assignment_expression "pEVar38 = pEVar31->pRight" identifier = (field_expression "pEVar31->pRight" identifier -> field_identifier)) ;) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) (if_statement "if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n                uVar22 = pEVar38->op2;\n              }" { (expression_statement "uVar22 = pEVar38->op2;" (assignment_expression "uVar22 = pEVar38->op2" identifier = (field_expression "pEVar38->op2" identifier -> field_identifier)) ;) })) (if_statement "if (uVar22 == 0xae) {\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }" if (parenthesized_expression "(uVar22 == 0xae)" ( (binary_expression "uVar22 == 0xae" identifier == number_literal) )) (compound_statement "{\n                iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;\n                if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }\n                rTemp = (int)pEVar35;\n                codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);\n                bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];\n              }" { (expression_statement "iVar26 = ((pEVar38->x).pList)->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pList)->nExpr" identifier = (field_expression "((pEVar38->x).pList)->nExpr" (parenthesized_expression "((pEVar38->x).pList)" ( (field_expression "(pEVar38->x).pList" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009cf97:\n                if (iVar26 < 2) goto LAB_0009c2d7;" statement_identifier : (if_statement "if (iVar26 < 2) goto LAB_0009c2d7;" if (parenthesized_expression "(iVar26 < 2)" ( (binary_expression "iVar26 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c2d7;" goto statement_identifier ;))) (if_statement "if (pParse->nTempReg == '\0') {\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }\n                else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }" if (parenthesized_expression "(pParse->nTempReg == '\0')" ( (binary_expression "pParse->nTempReg == '\0'" (field_expression "pParse->nTempReg" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  pEVar35 = (Expr *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pEVar35;\n                }" { (expression_statement "pEVar35 = (Expr *)(pParse->nMem + 1);" (assignment_expression "pEVar35 = (Expr *)(pParse->nMem + 1)" identifier = (cast_expression "(Expr *)(pParse->nMem + 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nMem = (int)pEVar35;" (assignment_expression "pParse->nMem = (int)pEVar35" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pEVar35" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }" else (compound_statement "{\n                  bVar23 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar23;\n                  pEVar35 = (Expr *)pParse->aTempReg[bVar23];\n                }" { (expression_statement "bVar23 = pParse->nTempReg - 1;" (assignment_expression "bVar23 = pParse->nTempReg - 1" identifier = (binary_expression "pParse->nTempReg - 1" (field_expression "pParse->nTempReg" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse->nTempReg = bVar23;" (assignment_expression "pParse->nTempReg = bVar23" (field_expression "pParse->nTempReg" identifier -> field_identifier) = identifier) ;) (expression_statement "pEVar35 = (Expr *)pParse->aTempReg[bVar23];" (assignment_expression "pEVar35 = (Expr *)pParse->aTempReg[bVar23]" identifier = (cast_expression "(Expr *)pParse->aTempReg[bVar23]" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pParse->aTempReg[bVar23]" (field_expression "pParse->aTempReg" identifier -> field_identifier) [ identifier ]))) ;) }))) (expression_statement "rTemp = (int)pEVar35;" (assignment_expression "rTemp = (int)pEVar35" identifier = (cast_expression "(int)pEVar35" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "codeExprOrVector(pParse,pEVar38,(int)pEVar35,1);" (call_expression "codeExprOrVector(pParse,pEVar38,(int)pEVar35,1)" identifier (argument_list "(pParse,pEVar38,(int)pEVar35,1)" ( identifier , identifier , (cast_expression "(int)pEVar35" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1];" (assignment_expression "bVar23 = aMoveOp[pEVar31->op - 0x37 & 2 | 1]" identifier = (subscript_expression "aMoveOp[pEVar31->op - 0x37 & 2 | 1]" identifier [ (binary_expression "pEVar31->op - 0x37 & 2 | 1" (binary_expression "pEVar31->op - 0x37 & 2" (binary_expression "pEVar31->op - 0x37" (field_expression "pEVar31->op" identifier -> field_identifier) - number_literal) & number_literal) | number_literal) ])) ;) }) (else_clause "else {\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }" else (compound_statement "{\n                if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);\n                disableTerm(pLevel,pWVar54);\n                bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);\n              }" { (if_statement "if (uVar22 == 0x88) {\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n                  iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009cf97;\n                }" { (expression_statement "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar38->x).pSelect)->pEList->nExpr" (field_expression "((pEVar38->x).pSelect)->pEList" (parenthesized_expression "((pEVar38->x).pSelect)" ( (field_expression "(pEVar38->x).pSelect" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009cf97;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c2d7:\n                pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);" statement_identifier : (expression_statement "pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp);" (assignment_expression "pEVar35 = (Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp)" identifier = (cast_expression "(Expr *)sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3ExprCodeTemp(pParse,pEVar38,&rTemp)" identifier (argument_list "(pParse,pEVar38,&rTemp)" ( identifier , identifier , (pointer_expression "&rTemp" & identifier) ))))) ;)) (expression_statement "disableTerm(pLevel,pWVar54);" (call_expression "disableTerm(pLevel,pWVar54)" identifier (argument_list "(pLevel,pWVar54)" ( identifier , identifier ))) ;) (expression_statement "bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe);" (assignment_expression "bVar23 = *(byte *)((int)scan.aiCur + pEVar31->op + 0xe)" identifier = (pointer_expression "*(byte *)((int)scan.aiCur + pEVar31->op + 0xe)" * (cast_expression "(byte *)((int)scan.aiCur + pEVar31->op + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)scan.aiCur + pEVar31->op + 0xe)" ( (binary_expression "(int)scan.aiCur + pEVar31->op + 0xe" (binary_expression "(int)scan.aiCur + pEVar31->op" (cast_expression "(int)scan.aiCur" ( (type_descriptor "int" primitive_type) ) (field_expression "scan.aiCur" identifier . field_identifier)) + (field_expression "pEVar31->op" identifier -> field_identifier)) + number_literal) ))))) ;) }))) (expression_statement "sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35);" (call_expression "sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35)" identifier (argument_list "(v,(uint)bVar23,(int)p1,iVar58,(int)pEVar35)" ( identifier , (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)pEVar35" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (rTemp != 0) {\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }" if (parenthesized_expression "(rTemp != 0)" ( (binary_expression "rTemp != 0" identifier != number_literal) )) (compound_statement "{\n                sqlite3ReleaseTempReg(pParse,rTemp);\n              }" { (expression_statement "sqlite3ReleaseTempReg(pParse,rTemp);" (call_expression "sqlite3ReleaseTempReg(pParse,rTemp)" identifier (argument_list "(pParse,rTemp)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_0009c32f;" goto statement_identifier ;) })) (if_statement "if (pEVar42 != (Expr *)0x0) {\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }" if (parenthesized_expression "(pEVar42 != (Expr *)0x0)" ( (binary_expression "pEVar42 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pWVar48 = (WhereTerm *)0x0;\n              iVar28 = 0x21;\n              goto LAB_0009c549;\n            }" { (expression_statement "pWVar48 = (WhereTerm *)0x0;" (assignment_expression "pWVar48 = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar28 = 0x21;" (assignment_expression "iVar28 = 0x21" identifier = number_literal) ;) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;) })) (labeled_statement "LAB_0009bc9a:\n            sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x25,(int)p1,iVar26,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (expression_statement "iVar58 = v->nOp;" (assignment_expression "iVar58 = v->nOp" identifier = (field_expression "v->nOp" identifier -> field_identifier)) ;) (expression_statement "pEVar35 = in_stack_fffffe58;" (assignment_expression "pEVar35 = in_stack_fffffe58" identifier = identifier) ;) (labeled_statement "LAB_0009bcbb:\n            pLevel->op = '\x05';" statement_identifier : (expression_statement "pLevel->op = '\x05';" (assignment_expression "pLevel->op = '\x05'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'\x05'" ' escape_sequence ')) ;)) }) (else_clause "else {\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }" else (compound_statement "{\n            ppWVar34 = pWVar63->aLTerm;\n            pWVar54 = *ppWVar34;\n            if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }\n            pWVar29 = pWVar54;\n            if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }\nLAB_0009c544:\n            pWVar48 = pWVar29;\n            iVar28 = 0x21;\nLAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);\n            pWVar29 = pWVar48;\n            pEVar35 = in_stack_fffffe58;\nLAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar58 = v->nOp;\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;\n            pLevel->op = '\x04';\n          }" { (expression_statement "ppWVar34 = pWVar63->aLTerm;" (assignment_expression "ppWVar34 = pWVar63->aLTerm" identifier = (field_expression "pWVar63->aLTerm" identifier -> field_identifier)) ;) (expression_statement "pWVar54 = *ppWVar34;" (assignment_expression "pWVar54 = *ppWVar34" identifier = (pointer_expression "*ppWVar34" * identifier)) ;) (if_statement "if ((uVar53 & 0x10) != 0) {\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }" if (parenthesized_expression "((uVar53 & 0x10) != 0)" ( (binary_expression "(uVar53 & 0x10) != 0" (parenthesized_expression "(uVar53 & 0x10)" ( (binary_expression "uVar53 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar28 = 4;\n              goto LAB_0009c28b;\n            }" { (expression_statement "iVar28 = 4;" (assignment_expression "iVar28 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0009c28b;" goto statement_identifier ;) })) (expression_statement "pWVar29 = pWVar54;" (assignment_expression "pWVar29 = pWVar54" identifier = identifier) ;) (if_statement "if (pEVar42 == (Expr *)0x0) {\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;\n              pWVar29 = (WhereTerm *)0x0;\n              goto LAB_0009c2a8;\n            }" { (if_statement "if (pWVar54 == (WhereTerm *)0x0) goto LAB_0009bc9a;" if (parenthesized_expression "(pWVar54 == (WhereTerm *)0x0)" ( (binary_expression "pWVar54 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009bc9a;" goto statement_identifier ;)) (expression_statement "pWVar29 = (WhereTerm *)0x0;" (assignment_expression "pWVar29 = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009c2a8;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c544:\n            pWVar48 = pWVar29;" statement_identifier : (expression_statement "pWVar48 = pWVar29;" (assignment_expression "pWVar48 = pWVar29" identifier = identifier) ;)) (expression_statement "iVar28 = 0x21;" (assignment_expression "iVar28 = 0x21" identifier = number_literal) ;) (labeled_statement "LAB_0009c549:\n            sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,iVar28,(int)p1,iVar26,(int)in_stack_fffffe58)" ( identifier , identifier , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (expression_statement "pWVar29 = pWVar48;" (assignment_expression "pWVar29 = pWVar48" identifier = identifier) ;) (expression_statement "pEVar35 = in_stack_fffffe58;" (assignment_expression "pEVar35 = in_stack_fffffe58" identifier = identifier) ;) (labeled_statement "LAB_0009c32f:\n            if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }" statement_identifier : (if_statement "if (pWVar29 != (WhereTerm *)0x0) {\n              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\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              pEVar31 = pWVar29->pExpr;\n              pEVar38 = pEVar31->pRight;\n              iVar26 = pParse->nMem + 1;\n              pParse->nMem = iVar26;\n              codeExprOrVector(pParse,pEVar38,iVar26,1);\n              pEVar38 = pEVar31->pRight;\n              uVar22 = pEVar38->op;\n              if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }\n              if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }\n              if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }\n              iVar44 = v->nOp;\n              if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)in_stack_fffffe58;\n              sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);\n              sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);\n              if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }\n              goto LAB_0009b1e0;\n            }" { (expression_statement "pEVar31 = pWVar29->pExpr;" (assignment_expression "pEVar31 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) (expression_statement "pEVar38 = pEVar31->pRight;" (assignment_expression "pEVar38 = pEVar31->pRight" identifier = (field_expression "pEVar31->pRight" identifier -> field_identifier)) ;) (expression_statement "iVar26 = pParse->nMem + 1;" (assignment_expression "iVar26 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar26;" (assignment_expression "pParse->nMem = iVar26" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "codeExprOrVector(pParse,pEVar38,iVar26,1);" (call_expression "codeExprOrVector(pParse,pEVar38,iVar26,1)" identifier (argument_list "(pParse,pEVar38,iVar26,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "pEVar38 = pEVar31->pRight;" (assignment_expression "pEVar38 = pEVar31->pRight" identifier = (field_expression "pEVar31->pRight" identifier -> field_identifier)) ;) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) (if_statement "if (uVar22 == 0xad) {\n                uVar22 = pEVar38->op2;\n              }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n                uVar22 = pEVar38->op2;\n              }" { (expression_statement "uVar22 = pEVar38->op2;" (assignment_expression "uVar22 = pEVar38->op2" identifier = (field_expression "pEVar38->op2" identifier -> field_identifier)) ;) })) (if_statement "if (uVar22 == 0xae) {\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }" if (parenthesized_expression "(uVar22 == 0xae)" ( (binary_expression "uVar22 == 0xae" identifier == number_literal) )) (compound_statement "{\n                iVar28 = ((pEVar38->x).pList)->nExpr;\nLAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;\nLAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;\n              }" { (expression_statement "iVar28 = ((pEVar38->x).pList)->nExpr;" (assignment_expression "iVar28 = ((pEVar38->x).pList)->nExpr" identifier = (field_expression "((pEVar38->x).pList)->nExpr" (parenthesized_expression "((pEVar38->x).pList)" ( (field_expression "(pEVar38->x).pList" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009ca64:\n                if (iVar28 < 2) goto LAB_0009c37b;" statement_identifier : (if_statement "if (iVar28 < 2) goto LAB_0009c37b;" if (parenthesized_expression "(iVar28 < 2)" ( (binary_expression "iVar28 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c37b;" goto statement_identifier ;))) (labeled_statement "LAB_0009ca6d:\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;" statement_identifier : (expression_statement "iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38;" (assignment_expression "iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38" identifier = (binary_expression "(-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe) + 0x38" (parenthesized_expression "(-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe)" ( (binary_expression "-(uint)(pEVar42 == (Expr *)0x0) & 0xfffffffe" (unary_expression "-(uint)(pEVar42 == (Expr *)0x0)" - (call_expression "(uint)(pEVar42 == (Expr *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & number_literal) )) + number_literal)) ;)) }) (else_clause "else {\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }" else (compound_statement "{\n                if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }\nLAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;\n                iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;\n              }" { (if_statement "if (uVar22 == 0x88) {\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n                  iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009ca64;\n                }" { (expression_statement "iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar28 = ((pEVar38->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar38->x).pSelect)->pEList->nExpr" (field_expression "((pEVar38->x).pSelect)->pEList" (parenthesized_expression "((pEVar38->x).pSelect)" ( (field_expression "(pEVar38->x).pSelect" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009ca64;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c37b:\n                if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;" statement_identifier : (if_statement "if ((pEVar31->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;" if (parenthesized_expression "((pEVar31->op - 0x36 & 0xfd) != 0)" ( (binary_expression "(pEVar31->op - 0x36 & 0xfd) != 0" (parenthesized_expression "(pEVar31->op - 0x36 & 0xfd)" ( (binary_expression "pEVar31->op - 0x36 & 0xfd" (binary_expression "pEVar31->op - 0x36" (field_expression "pEVar31->op" identifier -> field_identifier) - number_literal) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009ca6d;" goto statement_identifier ;))) (expression_statement "iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37;" (assignment_expression "iVar28 = (-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37" identifier = (binary_expression "(-(uint)(pEVar42 == (Expr *)0x0) & 2) + 0x37" (parenthesized_expression "(-(uint)(pEVar42 == (Expr *)0x0) & 2)" ( (binary_expression "-(uint)(pEVar42 == (Expr *)0x0) & 2" (unary_expression "-(uint)(pEVar42 == (Expr *)0x0)" - (call_expression "(uint)(pEVar42 == (Expr *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & number_literal) )) + number_literal)) ;) }))) (if_statement "if (uVar22 == 0xae) {\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }" if (parenthesized_expression "(uVar22 == 0xae)" ( (binary_expression "uVar22 == 0xae" identifier == number_literal) )) (compound_statement "{\n                iVar44 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;\n              }" { (expression_statement "iVar44 = ((pEVar38->x).pList)->nExpr;" (assignment_expression "iVar44 = ((pEVar38->x).pList)->nExpr" identifier = (field_expression "((pEVar38->x).pList)->nExpr" (parenthesized_expression "((pEVar38->x).pList)" ( (field_expression "(pEVar38->x).pList" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009d05c:\n                if (iVar44 < 2) goto LAB_0009c3ac;" statement_identifier : (if_statement "if (iVar44 < 2) goto LAB_0009c3ac;" if (parenthesized_expression "(iVar44 < 2)" ( (binary_expression "iVar44 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c3ac;" goto statement_identifier ;))) }) (else_clause "else {\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }" else (compound_statement "{\n                if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);\n              }" { (if_statement "if (uVar22 == 0x88) {\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n                  iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;\n                  goto LAB_0009d05c;\n                }" { (expression_statement "iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar44 = ((pEVar38->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar38->x).pSelect)->pEList->nExpr" (field_expression "((pEVar38->x).pSelect)->pEList" (parenthesized_expression "((pEVar38->x).pSelect)" ( (field_expression "(pEVar38->x).pSelect" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009d05c;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c3ac:\n                disableTerm(pLevel,pWVar29);" statement_identifier : (expression_statement "disableTerm(pLevel,pWVar29);" (call_expression "disableTerm(pLevel,pWVar29)" identifier (argument_list "(pLevel,pWVar29)" ( identifier , identifier ))) ;)) }))) (expression_statement "iVar44 = v->nOp;" (assignment_expression "iVar44 = v->nOp" identifier = (field_expression "v->nOp" identifier -> field_identifier)) ;) (if_statement "if (pEVar42 == (Expr *)0x0) {\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }\n              else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pLevel->op = '\x05';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }" { (expression_statement "pLevel->op = '\x05';" (assignment_expression "pLevel->op = '\x05'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'\x05'" ' escape_sequence ')) ;) (expression_statement "pLevel->p2 = iVar44;" (assignment_expression "pLevel->p2 = iVar44" (field_expression "pLevel->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->p1 = (int)p1;" (assignment_expression "pLevel->p1 = (int)p1" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }" else (compound_statement "{\n                pLevel->op = '\x04';\n                pLevel->p2 = iVar44;\n                pLevel->p1 = (int)p1;\n              }" { (expression_statement "pLevel->op = '\x04';" (assignment_expression "pLevel->op = '\x04'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'\x04'" ' escape_sequence ')) ;) (expression_statement "pLevel->p2 = iVar44;" (assignment_expression "pLevel->p2 = iVar44" (field_expression "pLevel->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->p1 = (int)p1;" (assignment_expression "pLevel->p1 = (int)p1" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (expression_statement "in_stack_fffffe58 = (Expr *)(pParse->nMem + 1);" (assignment_expression "in_stack_fffffe58 = (Expr *)(pParse->nMem + 1)" identifier = (cast_expression "(Expr *)(pParse->nMem + 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nMem = (int)in_stack_fffffe58;" (assignment_expression "pParse->nMem = (int)in_stack_fffffe58" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35);" (call_expression "sqlite3VdbeAddOp3(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35)" identifier (argument_list "(v,0x7f,(int)p1,(int)in_stack_fffffe58,(int)pEVar35)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar35" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58)" identifier (argument_list "(v,iVar28,iVar26,iVar58,(int)in_stack_fffffe58)" ( identifier , identifier , identifier , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (0 < v->nOp) {\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }" if (parenthesized_expression "(0 < v->nOp)" ( (binary_expression "0 < v->nOp" number_literal < (field_expression "v->nOp" identifier -> field_identifier)) )) (compound_statement "{\n                local_158 = (Index *)0x0;\n                uVar53 = 2;\n                v->aOp[v->nOp + -1].p5 = 0x53;\n                goto LAB_0009b200;\n              }" { (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) (expression_statement "v->aOp[v->nOp + -1].p5 = 0x53;" (assignment_expression "v->aOp[v->nOp + -1].p5 = 0x53" (field_expression "v->aOp[v->nOp + -1].p5" (subscript_expression "v->aOp[v->nOp + -1]" (field_expression "v->aOp" identifier -> field_identifier) [ (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) }))) (expression_statement "iVar58 = v->nOp;" (assignment_expression "iVar58 = v->nOp" identifier = (field_expression "v->nOp" identifier -> field_identifier)) ;) (if_statement "if (pEVar42 == (Expr *)0x0) goto LAB_0009bcbb;" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009bcbb;" goto statement_identifier ;)) (expression_statement "pLevel->op = '\x04';" (assignment_expression "pLevel->op = '\x04'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'\x04'" ' escape_sequence ')) ;) }))) (expression_statement "pLevel->p2 = iVar58;" (assignment_expression "pLevel->p2 = iVar58" (field_expression "pLevel->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) (expression_statement "pLevel->p1 = (int)p1;" (assignment_expression "pLevel->p1 = (int)p1" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "in_stack_fffffe58 = pEVar35;" (assignment_expression "in_stack_fffffe58 = pEVar35" identifier = identifier) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) (if_statement "if ((uVar53 & 0x200) == 0) {\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }" if (parenthesized_expression "((uVar53 & 0x200) == 0)" ( (binary_expression "(uVar53 & 0x200) == 0" (parenthesized_expression "(uVar53 & 0x200)" ( (binary_expression "uVar53 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          pEVar9 = (ExprList *)pParse->nTab;\n          pParse->nTab = (int)((int)&pEVar9->nExpr + 1);\n          iVar58 = pParse->nMem + 1;\n          iVar26 = pParse->nLabel + -1;\n          pParse->nMem = iVar58;\n          pParse->nLabel = iVar26;\n          pTVar10 = pSVar7->a[uVar25].pTab;\n          pWVar54 = *pWVar63->aLTerm;\n          pWVar8 = (pWVar54->u).pOrInfo;\n          pLevel->op = 'A';\n          pLevel->p1 = iVar58;\n          if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }\n          if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }\n          iVar49 = 0;\n          pEVar42 = (Expr *)0x0;\n          iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);\n          iVar28 = (pWInfo->sWC).nTerm;\n          iVar44 = extraout_ECX;\n          if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }\n          uVar40 = pWInfo->wctrlFlags;\n          in_stack_fffffe58 = (Expr *)&DAT_00000001;\n          sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");\n          iVar28 = (pWVar8->wc).nTerm;\n          if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }\n          if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }\n          iVar58 = v->nOp + -1;\n          if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }\n          pOVar33 = (Op *)&dummy_22674;\n          if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }\n          pOVar33->p1 = v->nOp;\n          sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);\n          sqlite3VdbeResolveLabel(v,iVar26);\n          if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }\n          if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }\n          goto LAB_0009b1e0;\n        }" { (if_statement "if ((uVar53 & 0x2000) == 0) {\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }" if (parenthesized_expression "((uVar53 & 0x2000) == 0)" ( (binary_expression "(uVar53 & 0x2000) == 0" (parenthesized_expression "(uVar53 & 0x2000)" ( (binary_expression "uVar53 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }\n            pLevel->op = 0xad;\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }" { (if_statement "if ((bVar3 & 0x20) == 0) {\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }" if (parenthesized_expression "((bVar3 & 0x20) == 0)" ( (binary_expression "(bVar3 & 0x20) == 0" (parenthesized_expression "(bVar3 & 0x20)" ( (binary_expression "bVar3 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar58 = pEVar42[0x429a].iTable;\n              bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);\n              pLevel->p1 = (int)p1;\n              pLevel->op = (u8)iVar58;\n              iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);\n              pLevel->p5 = '\x01';\n              pLevel->p2 = iVar58 + 1;\n              goto LAB_0009b1e0;\n            }" { (expression_statement "iVar58 = pEVar42[0x429a].iTable;" (assignment_expression "iVar58 = pEVar42[0x429a].iTable" identifier = (field_expression "pEVar42[0x429a].iTable" (subscript_expression "pEVar42[0x429a]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2);" (assignment_expression "bVar23 = *(byte *)((int)&pEVar42[0x429a].nHeight + 2)" identifier = (pointer_expression "*(byte *)((int)&pEVar42[0x429a].nHeight + 2)" * (cast_expression "(byte *)((int)&pEVar42[0x429a].nHeight + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar42[0x429a].nHeight + 2)" ( (binary_expression "(int)&pEVar42[0x429a].nHeight + 2" (cast_expression "(int)&pEVar42[0x429a].nHeight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar42[0x429a].nHeight" & (field_expression "pEVar42[0x429a].nHeight" (subscript_expression "pEVar42[0x429a]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "pLevel->p1 = (int)p1;" (assignment_expression "pLevel->p1 = (int)p1" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pLevel->op = (u8)iVar58;" (assignment_expression "pLevel->op = (u8)iVar58" (field_expression "pLevel->op" identifier -> field_identifier) = (cast_expression "(u8)iVar58" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58);" (assignment_expression "iVar58 = sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,(uint)bVar23,(int)p1,iVar26,(int)in_stack_fffffe58)" ( identifier , (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pLevel->p5 = '\x01';" (assignment_expression "pLevel->p5 = '\x01'" (field_expression "pLevel->p5" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pLevel->p2 = iVar58 + 1;" (assignment_expression "pLevel->p2 = iVar58 + 1" (field_expression "pLevel->p2" identifier -> field_identifier) = (binary_expression "iVar58 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "pLevel->op = 0xad;" (assignment_expression "pLevel->op = 0xad" (field_expression "pLevel->op" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) (expression_statement "pEVar9 = (ExprList *)pParse->nTab;" (assignment_expression "pEVar9 = (ExprList *)pParse->nTab" identifier = (cast_expression "(ExprList *)pParse->nTab" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nTab" identifier -> field_identifier))) ;) (expression_statement "pParse->nTab = (int)((int)&pEVar9->nExpr + 1);" (assignment_expression "pParse->nTab = (int)((int)&pEVar9->nExpr + 1)" (field_expression "pParse->nTab" identifier -> field_identifier) = (cast_expression "(int)((int)&pEVar9->nExpr + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&pEVar9->nExpr + 1)" ( (binary_expression "(int)&pEVar9->nExpr + 1" (cast_expression "(int)&pEVar9->nExpr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar9->nExpr" & (field_expression "pEVar9->nExpr" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "iVar58 = pParse->nMem + 1;" (assignment_expression "iVar58 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar26 = pParse->nLabel + -1;" (assignment_expression "iVar26 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar58;" (assignment_expression "pParse->nMem = iVar58" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "pParse->nLabel = iVar26;" (assignment_expression "pParse->nLabel = iVar26" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pTVar10 = pSVar7->a[uVar25].pTab;" (assignment_expression "pTVar10 = pSVar7->a[uVar25].pTab" identifier = (field_expression "pSVar7->a[uVar25].pTab" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pWVar54 = *pWVar63->aLTerm;" (assignment_expression "pWVar54 = *pWVar63->aLTerm" identifier = (pointer_expression "*pWVar63->aLTerm" * (field_expression "pWVar63->aLTerm" identifier -> field_identifier))) ;) (expression_statement "pWVar8 = (pWVar54->u).pOrInfo;" (assignment_expression "pWVar8 = (pWVar54->u).pOrInfo" identifier = (field_expression "(pWVar54->u).pOrInfo" (parenthesized_expression "(pWVar54->u)" ( (field_expression "pWVar54->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pLevel->op = 'A';" (assignment_expression "pLevel->op = 'A'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'A'" ' character ')) ;) (expression_statement "pLevel->p1 = iVar58;" (assignment_expression "pLevel->p1 = iVar58" (field_expression "pLevel->p1" identifier -> field_identifier) = identifier) ;) (if_statement "if (pWInfo->nLevel < 2) {\n            pTabList = pWInfo->pTabList;\n          }\n          else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }" if (parenthesized_expression "(pWInfo->nLevel < 2)" ( (binary_expression "pWInfo->nLevel < 2" (field_expression "pWInfo->nLevel" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n            pTabList = pWInfo->pTabList;\n          }" { (expression_statement "pTabList = pWInfo->pTabList;" (assignment_expression "pTabList = pWInfo->pTabList" identifier = (field_expression "pWInfo->pTabList" identifier -> field_identifier)) ;) }) (else_clause "else {\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }" else (compound_statement "{\n            uVar53 = (uint)pWInfo->nLevel - iLevel;\n            iVar28 = (uVar53 - 1) * 0x44;\n            uVar50 = iVar28 + 0x4c;\n            if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }\n            pTabList->nAlloc = (u32)(uVar53 & 0xff);\n            pTabList->nSrc = (int)(uVar53 & 0xff);\n            pSVar55 = pSVar7->a + uVar25;\n            pTabList->a[0].pSchema = pSVar55->pSchema;\n            pTabList->a[0].pIBIndex = pSVar55->pIBIndex;\n            puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);\n            iVar28 = (int)pTabList + (8 - (int)puVar59);\n            puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n            for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }\n            pSVar13 = pWInfo->pTabList;\n            if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }\n          }" { (expression_statement "uVar53 = (uint)pWInfo->nLevel - iLevel;" (assignment_expression "uVar53 = (uint)pWInfo->nLevel - iLevel" identifier = (binary_expression "(uint)pWInfo->nLevel - iLevel" (cast_expression "(uint)pWInfo->nLevel" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWInfo->nLevel" identifier -> field_identifier)) - identifier)) ;) (expression_statement "iVar28 = (uVar53 - 1) * 0x44;" (assignment_expression "iVar28 = (uVar53 - 1) * 0x44" identifier = (binary_expression "(uVar53 - 1) * 0x44" (parenthesized_expression "(uVar53 - 1)" ( (binary_expression "uVar53 - 1" identifier - number_literal) )) * number_literal)) ;) (expression_statement "uVar50 = iVar28 + 0x4c;" (assignment_expression "uVar50 = iVar28 + 0x4c" identifier = (binary_expression "iVar28 + 0x4c" identifier + number_literal)) ;) (if_statement "if (db == (sqlite3 *)0x0) {\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }" if (parenthesized_expression "(db == (sqlite3 *)0x0)" ( (binary_expression "db == (sqlite3 *)0x0" identifier == (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;\n              if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }\nLAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;\n            }" { (if_statement "if ((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)) goto LAB_0009b549;" if (parenthesized_expression "((uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU))" ( (binary_expression "(uVar50 == 0) || (0x7ffffefe < iVar28 + 0x4bU)" (parenthesized_expression "(uVar50 == 0)" ( (binary_expression "uVar50 == 0" identifier == number_literal) )) || (parenthesized_expression "(0x7ffffefe < iVar28 + 0x4bU)" ( (binary_expression "0x7ffffefe < iVar28 + 0x4bU" number_literal < (binary_expression "iVar28 + 0x4bU" identifier + number_literal)) ))) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;)) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }\n              else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);\n              }" { (expression_statement "pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50);" (assignment_expression "pTabList = (SrcList *)(*sqlite3Config.m.xMalloc)(uVar50)" identifier = (cast_expression "(SrcList *)(*sqlite3Config.m.xMalloc)(uVar50)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*sqlite3Config.m.xMalloc)(uVar50)" (parenthesized_expression "(*sqlite3Config.m.xMalloc)" ( (pointer_expression "*sqlite3Config.m.xMalloc" * (field_expression "sqlite3Config.m.xMalloc" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(uVar50)" ( identifier ))))) ;) }) (else_clause "else {\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }" else (compound_statement "{\n                pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              }" { (expression_statement "pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64));" (assignment_expression "pTabList = (SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier = (cast_expression "(SrcList *)sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc(CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier (argument_list "(CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( (call_expression "CONCAT44(in_stack_fffffe68,in_stack_fffffe64)" identifier (argument_list "(in_stack_fffffe68,in_stack_fffffe64)" ( identifier , identifier ))) ))))) ;) }))) (labeled_statement "LAB_0009d302:\n              if (pTabList == (SrcList *)0x0) goto LAB_0009b549;" statement_identifier : (if_statement "if (pTabList == (SrcList *)0x0) goto LAB_0009b549;" if (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)) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;))) }) (else_clause "else {\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }" else (compound_statement "{\n              if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }\n              if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }\n            }" { (if_statement "if ((db->lookaside).sz < uVar50) {\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }" if (parenthesized_expression "((db->lookaside).sz < uVar50)" ( (binary_expression "(db->lookaside).sz < uVar50" (field_expression "(db->lookaside).sz" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) < identifier) )) (compound_statement "{\n                if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n                goto LAB_0009d302;\n              }" { (if_statement "if ((db->lookaside).bDisable == 0) {\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }\n                else if (db->mallocFailed != '\0') goto LAB_0009b549;" if (parenthesized_expression "((db->lookaside).bDisable == 0)" ( (binary_expression "(db->lookaside).bDisable == 0" (field_expression "(db->lookaside).bDisable" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n                  puVar1 = (db->lookaside).anStat + 1;\n                  *puVar1 = *puVar1 + 1;\n                }" { (expression_statement "puVar1 = (db->lookaside).anStat + 1;" (assignment_expression "puVar1 = (db->lookaside).anStat + 1" identifier = (binary_expression "(db->lookaside).anStat + 1" (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) }) (else_clause "else if (db->mallocFailed != '\0') goto LAB_0009b549;" else (if_statement "if (db->mallocFailed != '\0') goto LAB_0009b549;" 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_0009b549;" goto statement_identifier ;)))) (labeled_statement "LAB_0009d2f9:\n                pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));" statement_identifier : (expression_statement "pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64));" (assignment_expression "pTabList = (SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier = (cast_expression "(SrcList *)\n                           dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dbMallocRawFinish(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier (argument_list "(db,CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( identifier , (call_expression "CONCAT44(in_stack_fffffe68,in_stack_fffffe64)" identifier (argument_list "(in_stack_fffffe68,in_stack_fffffe64)" ( identifier , identifier ))) ))))) ;)) (goto_statement "goto LAB_0009d302;" goto statement_identifier ;) })) (if_statement "if (uVar50 < 0x81) {\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }\n              else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }" if (parenthesized_expression "(uVar50 < 0x81)" ( (binary_expression "uVar50 < 0x81" identifier < number_literal) )) (compound_statement "{\n                pTabList = (SrcList *)(db->lookaside).pSmallFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }\n              }" { (expression_statement "pTabList = (SrcList *)(db->lookaside).pSmallFree;" (assignment_expression "pTabList = (SrcList *)(db->lookaside).pSmallFree" identifier = (cast_expression "(SrcList *)(db->lookaside).pSmallFree" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(db->lookaside).pSmallFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }" if (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                  pTabList = (SrcList *)(db->lookaside).pSmallInit;\n                  if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallInit = pLVar12;\n                }" { (expression_statement "pTabList = (SrcList *)(db->lookaside).pSmallInit;" (assignment_expression "pTabList = (SrcList *)(db->lookaside).pSmallInit" identifier = (cast_expression "(SrcList *)(db->lookaside).pSmallInit" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(db->lookaside).pSmallInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pTabList == (SrcList *)0x0) goto LAB_0009d46c;" if (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)) )) (goto_statement "goto LAB_0009d46c;" goto statement_identifier ;)) (expression_statement "pLVar12 = (LookasideSlot *)pTabList->nSrc;" (assignment_expression "pLVar12 = (LookasideSlot *)pTabList->nSrc" identifier = (cast_expression "(LookasideSlot *)pTabList->nSrc" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTabList->nSrc" identifier -> field_identifier))) ;) (expression_statement "puVar1 = (db->lookaside).anStat;" (assignment_expression "puVar1 = (db->lookaside).anStat" identifier = (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "(db->lookaside).pSmallInit = pLVar12;" (assignment_expression "(db->lookaside).pSmallInit = pLVar12" (field_expression "(db->lookaside).pSmallInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }" else (compound_statement "{\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pSmallFree = pLVar12;\n                }" { (expression_statement "pLVar12 = (LookasideSlot *)pTabList->nSrc;" (assignment_expression "pLVar12 = (LookasideSlot *)pTabList->nSrc" identifier = (cast_expression "(LookasideSlot *)pTabList->nSrc" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTabList->nSrc" identifier -> field_identifier))) ;) (expression_statement "puVar1 = (db->lookaside).anStat;" (assignment_expression "puVar1 = (db->lookaside).anStat" identifier = (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "(db->lookaside).pSmallFree = pLVar12;" (assignment_expression "(db->lookaside).pSmallFree = pLVar12" (field_expression "(db->lookaside).pSmallFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) }) (else_clause "else {\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }" else (compound_statement "{\nLAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;\n                if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }\n              }" { (labeled_statement "LAB_0009d46c:\n                pTabList = (SrcList *)(db->lookaside).pFree;" statement_identifier : (expression_statement "pTabList = (SrcList *)(db->lookaside).pFree;" (assignment_expression "pTabList = (SrcList *)(db->lookaside).pFree" identifier = (cast_expression "(SrcList *)(db->lookaside).pFree" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier))) ;)) (if_statement "if (pTabList == (SrcList *)0x0) {\n                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }\n                else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }" if (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                  pTabList = (SrcList *)(db->lookaside).pInit;\n                  if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pInit = pLVar12;\n                }" { (expression_statement "pTabList = (SrcList *)(db->lookaside).pInit;" (assignment_expression "pTabList = (SrcList *)(db->lookaside).pInit" identifier = (cast_expression "(SrcList *)(db->lookaside).pInit" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(db->lookaside).pInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pTabList == (SrcList *)0x0) {\n                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }" if (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                    puVar1 = (db->lookaside).anStat + 2;\n                    *puVar1 = *puVar1 + 1;\n                    goto LAB_0009d2f9;\n                  }" { (expression_statement "puVar1 = (db->lookaside).anStat + 2;" (assignment_expression "puVar1 = (db->lookaside).anStat + 2" identifier = (binary_expression "(db->lookaside).anStat + 2" (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (goto_statement "goto LAB_0009d2f9;" goto statement_identifier ;) })) (expression_statement "pLVar12 = (LookasideSlot *)pTabList->nSrc;" (assignment_expression "pLVar12 = (LookasideSlot *)pTabList->nSrc" identifier = (cast_expression "(LookasideSlot *)pTabList->nSrc" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTabList->nSrc" identifier -> field_identifier))) ;) (expression_statement "puVar1 = (db->lookaside).anStat;" (assignment_expression "puVar1 = (db->lookaside).anStat" identifier = (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "(db->lookaside).pInit = pLVar12;" (assignment_expression "(db->lookaside).pInit = pLVar12" (field_expression "(db->lookaside).pInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }" else (compound_statement "{\n                  pLVar12 = (LookasideSlot *)pTabList->nSrc;\n                  puVar1 = (db->lookaside).anStat;\n                  *puVar1 = *puVar1 + 1;\n                  (db->lookaside).pFree = pLVar12;\n                }" { (expression_statement "pLVar12 = (LookasideSlot *)pTabList->nSrc;" (assignment_expression "pLVar12 = (LookasideSlot *)pTabList->nSrc" identifier = (cast_expression "(LookasideSlot *)pTabList->nSrc" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTabList->nSrc" identifier -> field_identifier))) ;) (expression_statement "puVar1 = (db->lookaside).anStat;" (assignment_expression "puVar1 = (db->lookaside).anStat" identifier = (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "(db->lookaside).pFree = pLVar12;" (assignment_expression "(db->lookaside).pFree = pLVar12" (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) }))) }))) (expression_statement "pTabList->nAlloc = (u32)(uVar53 & 0xff);" (assignment_expression "pTabList->nAlloc = (u32)(uVar53 & 0xff)" (field_expression "pTabList->nAlloc" identifier -> field_identifier) = (call_expression "(u32)(uVar53 & 0xff)" (parenthesized_expression "(u32)" ( identifier )) (argument_list "(uVar53 & 0xff)" ( (binary_expression "uVar53 & 0xff" identifier & number_literal) )))) ;) (expression_statement "pTabList->nSrc = (int)(uVar53 & 0xff);" (assignment_expression "pTabList->nSrc = (int)(uVar53 & 0xff)" (field_expression "pTabList->nSrc" identifier -> field_identifier) = (cast_expression "(int)(uVar53 & 0xff)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar53 & 0xff)" ( (binary_expression "uVar53 & 0xff" identifier & number_literal) )))) ;) (expression_statement "pSVar55 = pSVar7->a + uVar25;" (assignment_expression "pSVar55 = pSVar7->a + uVar25" identifier = (binary_expression "pSVar7->a + uVar25" (field_expression "pSVar7->a" identifier -> field_identifier) + identifier)) ;) (expression_statement "pTabList->a[0].pSchema = pSVar55->pSchema;" (assignment_expression "pTabList->a[0].pSchema = pSVar55->pSchema" (field_expression "pTabList->a[0].pSchema" (subscript_expression "pTabList->a[0]" (field_expression "pTabList->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (field_expression "pSVar55->pSchema" identifier -> field_identifier)) ;) (expression_statement "pTabList->a[0].pIBIndex = pSVar55->pIBIndex;" (assignment_expression "pTabList->a[0].pIBIndex = pSVar55->pIBIndex" (field_expression "pTabList->a[0].pIBIndex" (subscript_expression "pTabList->a[0]" (field_expression "pTabList->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (field_expression "pSVar55->pIBIndex" identifier -> field_identifier)) ;) (expression_statement "puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc);" (assignment_expression "puVar59 = (undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)&pTabList->a[0].zDatabase & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)&pTabList->a[0].zDatabase & 0xfffffffc)" ( (binary_expression "(uint)&pTabList->a[0].zDatabase & 0xfffffffc" (binary_expression "(uint)&pTabList->a[0].zDatabase" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pTabList->a[0].zDatabase" (subscript_expression "pTabList->a[0]" (field_expression "pTabList->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) & number_literal) )))) ;) (expression_statement "iVar28 = (int)pTabList + (8 - (int)puVar59);" (assignment_expression "iVar28 = (int)pTabList + (8 - (int)puVar59)" identifier = (binary_expression "(int)pTabList + (8 - (int)puVar59)" (cast_expression "(int)pTabList" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - (int)puVar59)" ( (binary_expression "8 - (int)puVar59" number_literal - (cast_expression "(int)puVar59" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar56 = (undefined4 *)((int)pSVar55 - iVar28);" (assignment_expression "puVar56 = (undefined4 *)((int)pSVar55 - iVar28)" identifier = (cast_expression "(undefined4 *)((int)pSVar55 - iVar28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar55 - iVar28)" ( (binary_expression "(int)pSVar55 - iVar28" (cast_expression "(int)pSVar55" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (for_statement "for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }" for ( (assignment_expression "uVar50 = iVar28 + 0x44U >> 2" identifier = (binary_expression "iVar28 + 0x44U >> 2" (binary_expression "iVar28 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar50 != 0" identifier != number_literal) ; (assignment_expression "uVar50 = uVar50 - 1" identifier = (binary_expression "uVar50 - 1" identifier - number_literal)) ) (compound_statement "{\n              *puVar59 = *puVar56;\n              puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n              puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n            }" { (expression_statement "*puVar59 = *puVar56;" (assignment_expression "*puVar59 = *puVar56" (pointer_expression "*puVar59" * identifier) = (pointer_expression "*puVar56" * identifier)) ;) (expression_statement "puVar56 = puVar56 + (uint)bVar23 * -2 + 1;" (assignment_expression "puVar56 = puVar56 + (uint)bVar23 * -2 + 1" identifier = (binary_expression "puVar56 + (uint)bVar23 * -2 + 1" (binary_expression "puVar56 + (uint)bVar23 * -2" identifier + (binary_expression "(uint)bVar23 * -2" (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar59 = puVar59 + (uint)bVar23 * -2 + 1;" (assignment_expression "puVar59 = puVar59 + (uint)bVar23 * -2 + 1" identifier = (binary_expression "puVar59 + (uint)bVar23 * -2 + 1" (binary_expression "puVar59 + (uint)bVar23 * -2" identifier + (binary_expression "(uint)bVar23 * -2" (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pSVar13 = pWInfo->pTabList;" (assignment_expression "pSVar13 = pWInfo->pTabList" identifier = (field_expression "pWInfo->pTabList" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)(uVar53 - 1)) {\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }" if (parenthesized_expression "(0 < (int)(uVar53 - 1))" ( (binary_expression "0 < (int)(uVar53 - 1)" number_literal < (cast_expression "(int)(uVar53 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar53 - 1)" ( (binary_expression "uVar53 - 1" identifier - number_literal) )))) )) (compound_statement "{\n              puVar45 = &pLevel[1].iFrom;\n              pSVar36 = pTabList + 1;\n              do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);\n            }" { (expression_statement "puVar45 = &pLevel[1].iFrom;" (assignment_expression "puVar45 = &pLevel[1].iFrom" identifier = (pointer_expression "&pLevel[1].iFrom" & (field_expression "pLevel[1].iFrom" (subscript_expression "pLevel[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "pSVar36 = pTabList + 1;" (assignment_expression "pSVar36 = pTabList + 1" identifier = (binary_expression "pTabList + 1" identifier + number_literal)) ;) (do_statement "do {\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              } while ((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62);" do (compound_statement "{\n                bVar3 = *puVar45;\n                puVar45 = puVar45 + 0x54;\n                puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);\n                pSVar55 = pSVar13->a + bVar3;\n                pSVar36->nSrc = (int)pSVar55->pSchema;\n                *(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;\n                paVar62 = &pSVar36->a[0].u1;\n                iVar28 = (int)pSVar36 - (int)puVar59;\n                puVar56 = (undefined4 *)((int)pSVar55 - iVar28);\n                for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }\n                pSVar36 = (SrcList *)paVar62;\n              }" { (expression_statement "bVar3 = *puVar45;" (assignment_expression "bVar3 = *puVar45" identifier = (pointer_expression "*puVar45" * identifier)) ;) (expression_statement "puVar45 = puVar45 + 0x54;" (assignment_expression "puVar45 = puVar45 + 0x54" identifier = (binary_expression "puVar45 + 0x54" identifier + number_literal)) ;) (expression_statement "puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc);" (assignment_expression "puVar59 = (undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)&pSVar36->nAlloc & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)&pSVar36->nAlloc & 0xfffffffc)" ( (binary_expression "(uint)&pSVar36->nAlloc & 0xfffffffc" (binary_expression "(uint)&pSVar36->nAlloc" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pSVar36->nAlloc" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "pSVar55 = pSVar13->a + bVar3;" (assignment_expression "pSVar55 = pSVar13->a + bVar3" identifier = (binary_expression "pSVar13->a + bVar3" (field_expression "pSVar13->a" identifier -> field_identifier) + identifier)) ;) (expression_statement "pSVar36->nSrc = (int)pSVar55->pSchema;" (assignment_expression "pSVar36->nSrc = (int)pSVar55->pSchema" (field_expression "pSVar36->nSrc" identifier -> field_identifier) = (cast_expression "(int)pSVar55->pSchema" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar55->pSchema" identifier -> field_identifier))) ;) (expression_statement "*(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;" (assignment_expression "*(Index **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex" (pointer_expression "*(Index **)((int)&pSVar36->a[0].colUsed + 4)" * (cast_expression "(Index **)((int)&pSVar36->a[0].colUsed + 4)" ( (type_descriptor "Index **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pSVar36->a[0].colUsed + 4)" ( (binary_expression "(int)&pSVar36->a[0].colUsed + 4" (cast_expression "(int)&pSVar36->a[0].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar36->a[0].colUsed" & (field_expression "pSVar36->a[0].colUsed" (subscript_expression "pSVar36->a[0]" (field_expression "pSVar36->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = (field_expression "pSVar55->pIBIndex" identifier -> field_identifier)) ;) (expression_statement "paVar62 = &pSVar36->a[0].u1;" (assignment_expression "paVar62 = &pSVar36->a[0].u1" identifier = (pointer_expression "&pSVar36->a[0].u1" & (field_expression "pSVar36->a[0].u1" (subscript_expression "pSVar36->a[0]" (field_expression "pSVar36->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar28 = (int)pSVar36 - (int)puVar59;" (assignment_expression "iVar28 = (int)pSVar36 - (int)puVar59" identifier = (binary_expression "(int)pSVar36 - (int)puVar59" (cast_expression "(int)pSVar36" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar59" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar56 = (undefined4 *)((int)pSVar55 - iVar28);" (assignment_expression "puVar56 = (undefined4 *)((int)pSVar55 - iVar28)" identifier = (cast_expression "(undefined4 *)((int)pSVar55 - iVar28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar55 - iVar28)" ( (binary_expression "(int)pSVar55 - iVar28" (cast_expression "(int)pSVar55" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (for_statement "for (uVar50 = iVar28 + 0x44U >> 2; uVar50 != 0; uVar50 = uVar50 - 1) {\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }" for ( (assignment_expression "uVar50 = iVar28 + 0x44U >> 2" identifier = (binary_expression "iVar28 + 0x44U >> 2" (binary_expression "iVar28 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar50 != 0" identifier != number_literal) ; (assignment_expression "uVar50 = uVar50 - 1" identifier = (binary_expression "uVar50 - 1" identifier - number_literal)) ) (compound_statement "{\n                  *puVar59 = *puVar56;\n                  puVar56 = puVar56 + (uint)bVar23 * -2 + 1;\n                  puVar59 = puVar59 + (uint)bVar23 * -2 + 1;\n                }" { (expression_statement "*puVar59 = *puVar56;" (assignment_expression "*puVar59 = *puVar56" (pointer_expression "*puVar59" * identifier) = (pointer_expression "*puVar56" * identifier)) ;) (expression_statement "puVar56 = puVar56 + (uint)bVar23 * -2 + 1;" (assignment_expression "puVar56 = puVar56 + (uint)bVar23 * -2 + 1" identifier = (binary_expression "puVar56 + (uint)bVar23 * -2 + 1" (binary_expression "puVar56 + (uint)bVar23 * -2" identifier + (binary_expression "(uint)bVar23 * -2" (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar59 = puVar59 + (uint)bVar23 * -2 + 1;" (assignment_expression "puVar59 = puVar59 + (uint)bVar23 * -2 + 1" identifier = (binary_expression "puVar59 + (uint)bVar23 * -2 + 1" (binary_expression "puVar59 + (uint)bVar23 * -2" identifier + (binary_expression "(uint)bVar23 * -2" (cast_expression "(uint)bVar23" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pSVar36 = (SrcList *)paVar62;" (assignment_expression "pSVar36 = (SrcList *)paVar62" identifier = (cast_expression "(SrcList *)paVar62" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "((anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62)" ( (binary_expression "(anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8) !=\n                       paVar62" (cast_expression "(anon_union_4_2_996c0f8d_for_u1 *)((int)pTabList + uVar53 * 0x44 + 8)" ( (type_descriptor "anon_union_4_2_996c0f8d_for_u1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pTabList + uVar53 * 0x44 + 8)" ( (binary_expression "(int)pTabList + uVar53 * 0x44 + 8" (binary_expression "(int)pTabList + uVar53 * 0x44" (cast_expression "(int)pTabList" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar53 * 0x44" identifier * number_literal)) + number_literal) ))) != identifier) )) ;) })) }))) (if_statement "if ((pWInfo->wctrlFlags & 0x10) == 0) {\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }\n          else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }" if (parenthesized_expression "((pWInfo->wctrlFlags & 0x10) == 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x10) == 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x10)" ( (binary_expression "pWInfo->wctrlFlags & 0x10" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }\n            local_138 = pParse->nMem + 1;\n            pParse->nMem = local_138;\n            sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);\nLAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);\n            pParse->nMem = (int)local_140;\n          }" { (if_statement "if ((pTVar10->tabFlags & 0x80) != 0) {\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }" if (parenthesized_expression "((pTVar10->tabFlags & 0x80) != 0)" ( (binary_expression "(pTVar10->tabFlags & 0x80) != 0" (parenthesized_expression "(pTVar10->tabFlags & 0x80)" ( (binary_expression "pTVar10->tabFlags & 0x80" (field_expression "pTVar10->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }\n              pParse->nTab = pParse->nTab + 1;\n              goto LAB_0009ca50;\n            }" { (for_statement "for (pIVar51 = pTVar10->pIndex; pIVar51 != (Index *)0x0; pIVar51 = pIVar51->pNext) {\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }" for ( (assignment_expression "pIVar51 = pTVar10->pIndex" identifier = (field_expression "pTVar10->pIndex" identifier -> field_identifier)) ; (binary_expression "pIVar51 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pIVar51 = pIVar51->pNext" identifier = (field_expression "pIVar51->pNext" identifier -> field_identifier)) ) (compound_statement "{\n                if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }\n              }" { (if_statement "if ((pIVar51->field_0x37 & 3) == 2) {\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }" if (parenthesized_expression "((pIVar51->field_0x37 & 3) == 2)" ( (binary_expression "(pIVar51->field_0x37 & 3) == 2" (parenthesized_expression "(pIVar51->field_0x37 & 3)" ( (binary_expression "pIVar51->field_0x37 & 3" (field_expression "pIVar51->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                  local_138 = pParse->nTab;\n                  pParse->nTab = local_138 + 1;\n                  sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);\n                  sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);\n                  goto LAB_0009b879;\n                }" { (expression_statement "local_138 = pParse->nTab;" (assignment_expression "local_138 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "pParse->nTab = local_138 + 1;" (assignment_expression "pParse->nTab = local_138 + 1" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "local_138 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58)" identifier (argument_list "(v,100,local_138,(uint)pIVar51->nKeyCol,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , (cast_expression "(uint)pIVar51->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar51->nKeyCol" identifier -> field_identifier)) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeSetP4KeyInfo(pParse,pIVar51);" (call_expression "sqlite3VdbeSetP4KeyInfo(pParse,pIVar51)" identifier (argument_list "(pParse,pIVar51)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0009b879;" goto statement_identifier ;) })) })) (expression_statement "pParse->nTab = pParse->nTab + 1;" (assignment_expression "pParse->nTab = pParse->nTab + 1" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "pParse->nTab + 1" (field_expression "pParse->nTab" identifier -> field_identifier) + number_literal)) ;) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;) })) (expression_statement "local_138 = pParse->nMem + 1;" (assignment_expression "local_138 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = local_138;" (assignment_expression "pParse->nMem = local_138" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x48,0,local_138,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x48,0,local_138,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "LAB_0009b879:\n            local_140 = (Expr *)(pParse->nMem + 1);" statement_identifier : (expression_statement "local_140 = (Expr *)(pParse->nMem + 1);" (assignment_expression "local_140 = (Expr *)(pParse->nMem + 1)" identifier = (cast_expression "(Expr *)(pParse->nMem + 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;)) (expression_statement "pParse->nMem = (int)local_140;" (assignment_expression "pParse->nMem = (int)local_140" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }" else (compound_statement "{\n            local_140 = (Expr *)0x0;\n            local_138 = 0;\n          }" { (expression_statement "local_140 = (Expr *)0x0;" (assignment_expression "local_140 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_138 = 0;" (assignment_expression "local_138 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar49 = 0;" (assignment_expression "iVar49 = 0" identifier = number_literal) ;) (expression_statement "pEVar42 = (Expr *)0x0;" (assignment_expression "pEVar42 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58);" (assignment_expression "iVar30 = sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(v,0x45,0,iVar58,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,0,iVar58,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar28 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar28 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar44 = extraout_ECX;" (assignment_expression "iVar44 = extraout_ECX" identifier = identifier) ;) (if_statement "if (iVar28 < 2) {\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }\n          else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }" if (parenthesized_expression "(iVar28 < 2)" ( (binary_expression "iVar28 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0009d0ac:\n            local_134 = (Expr *)0x0;\n          }" { (labeled_statement "LAB_0009d0ac:\n            local_134 = (Expr *)0x0;" statement_identifier : (expression_statement "local_134 = (Expr *)0x0;" (assignment_expression "local_134 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }" else (compound_statement "{\n            do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);\n            if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;\n            local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);\n          }" { (do_statement "do {\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            } while (iVar49 < iVar28);" do (compound_statement "{\n              pWVar29 = (pWInfo->sWC).a + iVar49;\n              if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }\n              iVar49 = iVar49 + 1;\n            }" { (expression_statement "pWVar29 = (pWInfo->sWC).a + iVar49;" (assignment_expression "pWVar29 = (pWInfo->sWC).a + iVar49" identifier = (binary_expression "(pWInfo->sWC).a + iVar49" (field_expression "(pWInfo->sWC).a" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier) + identifier)) ;) (if_statement "if (((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)) {\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }" if (parenthesized_expression "(((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0))" ( (binary_expression "((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)) &&\n                 ((pWVar29->eOperator & 0x1fff) != 0)" (parenthesized_expression "((pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0))" ( (binary_expression "(pWVar29 != pWVar54) && ((pWVar29->wtFlags & 6) == 0)" (parenthesized_expression "(pWVar29 != pWVar54)" ( (binary_expression "pWVar29 != pWVar54" identifier != identifier) )) && (parenthesized_expression "((pWVar29->wtFlags & 6) == 0)" ( (binary_expression "(pWVar29->wtFlags & 6) == 0" (parenthesized_expression "(pWVar29->wtFlags & 6)" ( (binary_expression "pWVar29->wtFlags & 6" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pWVar29->eOperator & 0x1fff) != 0)" ( (binary_expression "(pWVar29->eOperator & 0x1fff) != 0" (parenthesized_expression "(pWVar29->eOperator & 0x1fff)" ( (binary_expression "pWVar29->eOperator & 0x1fff" (field_expression "pWVar29->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                pEVar31 = pWVar29->pExpr;\n                if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }\n                pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);\n                iVar28 = (pWInfo->sWC).nTerm;\n                iVar44 = extraout_ECX_00;\n              }" { (expression_statement "pEVar31 = pWVar29->pExpr;" (assignment_expression "pEVar31 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) (if_statement "if (pEVar31 != (Expr *)0x0) {\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }" if (parenthesized_expression "(pEVar31 != (Expr *)0x0)" ( (binary_expression "pEVar31 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);\n                }" { (expression_statement "pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64);" (assignment_expression "pEVar31 = exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64)" identifier = (call_expression "exprDup(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64)" identifier (argument_list "(db,pEVar31,iVar44,(u8 **)in_stack_fffffe64)" ( identifier , identifier , identifier , (cast_expression "(u8 **)in_stack_fffffe64" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) )))) ;) })) (expression_statement "pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31);" (assignment_expression "pEVar42 = sqlite3ExprAnd(pParse,pEVar42,pEVar31)" identifier = (call_expression "sqlite3ExprAnd(pParse,pEVar42,pEVar31)" identifier (argument_list "(pParse,pEVar42,pEVar31)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar28 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar28 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar44 = extraout_ECX_00;" (assignment_expression "iVar44 = extraout_ECX_00" identifier = identifier) ;) })) (expression_statement "iVar49 = iVar49 + 1;" (assignment_expression "iVar49 = iVar49 + 1" identifier = (binary_expression "iVar49 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar49 < iVar28)" ( (binary_expression "iVar49 < iVar28" identifier < identifier) )) ;) (if_statement "if (pEVar42 == (Expr *)0x0) goto LAB_0009d0ac;" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009d0ac;" goto statement_identifier ;)) (expression_statement "local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64);" (assignment_expression "local_134 = sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64)" identifier = (call_expression "sqlite3PExpr(pParse,0x1002c,pEVar42,in_stack_fffffe64)" identifier (argument_list "(pParse,0x1002c,pEVar42,in_stack_fffffe64)" ( identifier , number_literal , identifier , identifier )))) ;) }))) (expression_statement "uVar40 = pWInfo->wctrlFlags;" (assignment_expression "uVar40 = pWInfo->wctrlFlags" identifier = (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier)) ;) (expression_statement "in_stack_fffffe58 = (Expr *)&DAT_00000001;" (assignment_expression "in_stack_fffffe58 = (Expr *)&DAT_00000001" identifier = (cast_expression "(Expr *)&DAT_00000001" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"MULTI-INDEX OR")" identifier (argument_list "(pParse,'\x01',"MULTI-INDEX OR")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""MULTI-INDEX OR"" " string_content ") ))) ;) (expression_statement "iVar28 = (pWVar8->wc).nTerm;" (assignment_expression "iVar28 = (pWVar8->wc).nTerm" identifier = (field_expression "(pWVar8->wc).nTerm" (parenthesized_expression "(pWVar8->wc)" ( (field_expression "pWVar8->wc" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (iVar28 < 1) {\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }\n          else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }" if (parenthesized_expression "(iVar28 < 1)" ( (binary_expression "iVar28 < 1" identifier < number_literal) )) (compound_statement "{\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }\n            (pLevel->u).in.nIn = 0;\n            bVar60 = false;\n          }" { (expression_statement "iVar58 = pParse->addrExplain;" (assignment_expression "iVar58 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }" if (parenthesized_expression "(iVar58 != 0)" ( (binary_expression "iVar58 != 0" identifier != number_literal) )) (compound_statement "{\n              pVVar52 = pParse->pVdbe;\n              local_13c = (Index *)0x0;\n              bVar60 = false;\n              goto LAB_0009cb9d;\n            }" { (expression_statement "pVVar52 = pParse->pVdbe;" (assignment_expression "pVVar52 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_13c = (Index *)0x0;" (assignment_expression "local_13c = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (goto_statement "goto LAB_0009cb9d;" goto statement_identifier ;) })) (expression_statement "(pLevel->u).in.nIn = 0;" (assignment_expression "(pLevel->u).in.nIn = 0" (field_expression "(pLevel->u).in.nIn" (field_expression "(pLevel->u).in" (parenthesized_expression "(pLevel->u)" ( (field_expression "pLevel->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) }) (else_clause "else {\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }" else (compound_statement "{\n            bVar60 = false;\n            local_13c = (Index *)0x0;\n            iVar44 = 0;\n            do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);\n            iVar58 = pParse->addrExplain;\n            if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }\n            pParse->addrExplain = iVar58;\n            (pLevel->u).in.nIn = (int)local_13c;\n            if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }\n          }" { (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (expression_statement "local_13c = (Index *)0x0;" (assignment_expression "local_13c = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar44 = 0;" (assignment_expression "iVar44 = 0" identifier = number_literal) ;) (do_statement "do {\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            } while (iVar49 < iVar28);" do (compound_statement "{\n              pWVar29 = (pWVar8->wc).a + iVar44;\n              iVar49 = iVar44 + 1;\n              if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }\n              iVar44 = iVar49;\n            }" { (expression_statement "pWVar29 = (pWVar8->wc).a + iVar44;" (assignment_expression "pWVar29 = (pWVar8->wc).a + iVar44" identifier = (binary_expression "(pWVar8->wc).a + iVar44" (field_expression "(pWVar8->wc).a" (parenthesized_expression "(pWVar8->wc)" ( (field_expression "pWVar8->wc" identifier -> field_identifier) )) . field_identifier) + identifier)) ;) (expression_statement "iVar49 = iVar44 + 1;" (assignment_expression "iVar49 = iVar44 + 1" identifier = (binary_expression "iVar44 + 1" identifier + number_literal)) ;) (if_statement "if (((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)) {\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }" if (parenthesized_expression "(((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0))" ( (binary_expression "((Expr *)pWVar29->leftCursor == p1) || ((pWVar29->eOperator & 0x400) != 0)" (parenthesized_expression "((Expr *)pWVar29->leftCursor == p1)" ( (binary_expression "(Expr *)pWVar29->leftCursor == p1" (cast_expression "(Expr *)pWVar29->leftCursor" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar29->leftCursor" identifier -> field_identifier)) == identifier) )) || (parenthesized_expression "((pWVar29->eOperator & 0x400) != 0)" ( (binary_expression "(pWVar29->eOperator & 0x400) != 0" (parenthesized_expression "(pWVar29->eOperator & 0x400)" ( (binary_expression "pWVar29->eOperator & 0x400" (field_expression "pWVar29->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }\n                in_stack_fffffe58 = (Expr *)&DAT_00000001;\n                pPVar32 = pParse;\n                sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);\n                pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);\n                if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }\n                iVar28 = (pWVar8->wc).nTerm;\n              }" { (if_statement "if (local_134 != (Expr *)0x0) {\n                  local_134->pLeft = pWVar29->pExpr;\n                }" if (parenthesized_expression "(local_134 != (Expr *)0x0)" ( (binary_expression "local_134 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_134->pLeft = pWVar29->pExpr;\n                }" { (expression_statement "local_134->pLeft = pWVar29->pExpr;" (assignment_expression "local_134->pLeft = pWVar29->pExpr" (field_expression "local_134->pLeft" identifier -> field_identifier) = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) })) (expression_statement "in_stack_fffffe58 = (Expr *)&DAT_00000001;" (assignment_expression "in_stack_fffffe58 = (Expr *)&DAT_00000001" identifier = (cast_expression "(Expr *)&DAT_00000001" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "pPVar32 = pParse;" (assignment_expression "pPVar32 = pParse" identifier = identifier) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"INDEX %d",iVar49)" identifier (argument_list "(pParse,'\x01',"INDEX %d",iVar49)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""INDEX %d"" " string_content ") , identifier ))) ;) (expression_statement "pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58);" (assignment_expression "pWInfo_00 = sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3WhereBegin(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58)" identifier (argument_list "(pParse,(SrcList *)0x0,(Expr *)0x0,\n                                              (ExprList *)(int)(short)(uVar40 & 0x400 | 0x20),pEVar9\n                                              ,(u16)pPVar32,(int)in_stack_fffffe58)" ( identifier , (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(ExprList *)(int)(short)(uVar40 & 0x400 | 0x20)" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(uVar40 & 0x400 | 0x20)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(uVar40 & 0x400 | 0x20)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar40 & 0x400 | 0x20)" ( (binary_expression "uVar40 & 0x400 | 0x20" (binary_expression "uVar40 & 0x400" identifier & number_literal) | number_literal) ))))) , identifier , (cast_expression "(u16)pPVar32" ( (type_descriptor "u16" type_identifier) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (pWInfo_00 != (WhereInfo *)0x0) {\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }" if (parenthesized_expression "(pWInfo_00 != (WhereInfo *)0x0)" ( (binary_expression "pWInfo_00 != (WhereInfo *)0x0" identifier != (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pPVar32 = pParse->pToplevel;\n                  if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }\n                  if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }\n                  if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }\n                  bVar18 = true;\n                  if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }\n                  bVar60 = bVar18;\n                  pWVar63 = pWInfo_00->a[0].pWLoop;\n                  if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }\n                  sqlite3WhereEnd(pWInfo_00);\n                  iVar28 = pParse->addrExplain;\n                  if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }\n                  pParse->addrExplain = iVar28;\n                }" { (expression_statement "pPVar32 = pParse->pToplevel;" (assignment_expression "pPVar32 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n                    pPVar32 = pParse;\n                  }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    pPVar32 = pParse;\n                  }" { (expression_statement "pPVar32 = pParse;" (assignment_expression "pPVar32 = pParse" identifier = identifier) ;) })) (if_statement "if (pPVar32->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }" if (parenthesized_expression "(pPVar32->explain == '\x02')" ( (binary_expression "pPVar32->explain == '\x02'" (field_expression "pPVar32->explain" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);\n                  }" { (expression_statement "sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0);" (call_expression "sqlite3WhereExplainOneScan(pParse,pTabList,pWInfo_00->a,0)" identifier (argument_list "(pParse,pTabList,pWInfo_00->a,0)" ( identifier , identifier , (field_expression "pWInfo_00->a" identifier -> field_identifier) , number_literal ))) ;) })) (if_statement "if ((pWInfo->wctrlFlags & 0x10) == 0) {\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }\n                  else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }" if (parenthesized_expression "((pWInfo->wctrlFlags & 0x10) == 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x10) == 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x10)" ( (binary_expression "pWInfo->wctrlFlags & 0x10" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }\n                    if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                    if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }\n                  }" { (if_statement "if ((pWVar8->wc).nTerm + -1 == iVar44) {\n                      iVar44 = -1;\n                    }" if (parenthesized_expression "((pWVar8->wc).nTerm + -1 == iVar44)" ( (binary_expression "(pWVar8->wc).nTerm + -1 == iVar44" (binary_expression "(pWVar8->wc).nTerm + -1" (field_expression "(pWVar8->wc).nTerm" (parenthesized_expression "(pWVar8->wc)" ( (field_expression "pWVar8->wc" identifier -> field_identifier) )) . field_identifier) + number_literal) == identifier) )) (compound_statement "{\n                      iVar44 = -1;\n                    }" { (expression_statement "iVar44 = -1;" (assignment_expression "iVar44 = -1" identifier = number_literal) ;) })) (if_statement "if ((pTVar10->tabFlags & 0x80) == 0) {\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }\n                    else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }" if (parenthesized_expression "((pTVar10->tabFlags & 0x80) == 0)" ( (binary_expression "(pTVar10->tabFlags & 0x80) == 0" (parenthesized_expression "(pTVar10->tabFlags & 0x80)" ( (binary_expression "pTVar10->tabFlags & 0x80" (field_expression "pTVar10->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                      sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);\n                      in_stack_fffffe58 = local_140;\n                      iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }\n                    }" { (expression_statement "sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140);" (call_expression "sqlite3ExprCodeGetColumnOfTable(v,pTVar10,(int)p1,-1,(int)local_140)" identifier (argument_list "(v,pTVar10,(int)p1,-1,(int)local_140)" ( identifier , identifier , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_fffffe58 = local_140;" (assignment_expression "in_stack_fffffe58 = local_140" identifier = identifier) ;) (expression_statement "iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140);" (assignment_expression "iVar28 = sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140)" identifier = (call_expression "sqlite3VdbeAddOp3(v,0x2d,local_138,0,(int)local_140)" identifier (argument_list "(v,0x2d,local_138,0,(int)local_140)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pOVar33 = v->aOp;\n                        pOVar33[iVar28].p4type = -3;\n                        pOVar33[iVar28].p4.i = iVar44;\n                      }" { (expression_statement "pOVar33 = v->aOp;" (assignment_expression "pOVar33 = v->aOp" identifier = (field_expression "v->aOp" identifier -> field_identifier)) ;) (expression_statement "pOVar33[iVar28].p4type = -3;" (assignment_expression "pOVar33[iVar28].p4type = -3" (field_expression "pOVar33[iVar28].p4type" (subscript_expression "pOVar33[iVar28]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "pOVar33[iVar28].p4.i = iVar44;" (assignment_expression "pOVar33[iVar28].p4.i = iVar44" (field_expression "pOVar33[iVar28].p4.i" (field_expression "pOVar33[iVar28].p4" (subscript_expression "pOVar33[iVar28]" identifier [ identifier ]) . field_identifier) . field_identifier) = identifier) ;) })) }) (else_clause "else {\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }" else (compound_statement "{\n                      pIVar51 = pTVar10->pIndex;\n                      while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }\n                      uVar53 = (uint)pIVar51->nKeyCol;\n                      pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);\n                      if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }\n                      in_stack_fffffe58 = pEVar42;\n                      if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }\n                    }" { (expression_statement "pIVar51 = pTVar10->pIndex;" (assignment_expression "pIVar51 = pTVar10->pIndex" identifier = (field_expression "pTVar10->pIndex" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;\n                        if ((pIVar51->field_0x37 & 3) == 2) break;\n                        pIVar51 = pIVar51->pNext;\n                      }" { (if_statement "if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;" if (parenthesized_expression "(pIVar51 == (Index *)0x0)" ( (binary_expression "pIVar51 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (if_statement "if ((pIVar51->field_0x37 & 3) == 2) break;" if (parenthesized_expression "((pIVar51->field_0x37 & 3) == 2)" ( (binary_expression "(pIVar51->field_0x37 & 3) == 2" (parenthesized_expression "(pIVar51->field_0x37 & 3)" ( (binary_expression "pIVar51->field_0x37 & 3" (field_expression "pIVar51->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pIVar51 = pIVar51->pNext;" (assignment_expression "pIVar51 = pIVar51->pNext" identifier = (field_expression "pIVar51->pNext" identifier -> field_identifier)) ;) })) (expression_statement "uVar53 = (uint)pIVar51->nKeyCol;" (assignment_expression "uVar53 = (uint)pIVar51->nKeyCol" identifier = (cast_expression "(uint)pIVar51->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar51->nKeyCol" identifier -> field_identifier))) ;) (expression_statement "pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53);" (assignment_expression "pEVar42 = (Expr *)sqlite3GetTempRange(pParse,uVar53)" identifier = (cast_expression "(Expr *)sqlite3GetTempRange(pParse,uVar53)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3GetTempRange(pParse,uVar53)" identifier (argument_list "(pParse,uVar53)" ( identifier , identifier ))))) ;) (if_statement "if (uVar53 != 0) {\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }" if (parenthesized_expression "(uVar53 != 0)" ( (binary_expression "uVar53 != 0" identifier != number_literal) )) (compound_statement "{\n                        iVar28 = 0;\n                        pEVar31 = pEVar42;\n                        do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);\n                      }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "pEVar31 = pEVar42;" (assignment_expression "pEVar31 = pEVar42" identifier = identifier) ;) (do_statement "do {\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        } while (uVar53 * 2 != iVar28);" do (compound_statement "{\n                          psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);\n                          iVar28 = iVar28 + 2;\n                          sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);\n                          pEVar31 = (Expr *)&pEVar31->affExpr;\n                        }" { (expression_statement "psVar2 = (short *)((int)pIVar51->aiColumn + iVar28);" (assignment_expression "psVar2 = (short *)((int)pIVar51->aiColumn + iVar28)" identifier = (cast_expression "(short *)((int)pIVar51->aiColumn + iVar28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pIVar51->aiColumn + iVar28)" ( (binary_expression "(int)pIVar51->aiColumn + iVar28" (cast_expression "(int)pIVar51->aiColumn" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar51->aiColumn" identifier -> field_identifier)) + identifier) )))) ;) (expression_statement "iVar28 = iVar28 + 2;" (assignment_expression "iVar28 = iVar28 + 2" identifier = (binary_expression "iVar28 + 2" identifier + number_literal)) ;) (expression_statement "sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31);" (call_expression "sqlite3ExprCodeGetColumnOfTable\n                                    (v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31)" identifier (argument_list "(v,pTVar10,(int)p1,(int)*psVar2,(int)pEVar31)" ( identifier , identifier , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)*psVar2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar2" * identifier)) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pEVar31 = (Expr *)&pEVar31->affExpr;" (assignment_expression "pEVar31 = (Expr *)&pEVar31->affExpr" identifier = (cast_expression "(Expr *)&pEVar31->affExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar31->affExpr" & (field_expression "pEVar31->affExpr" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(uVar53 * 2 != iVar28)" ( (binary_expression "uVar53 * 2 != iVar28" (binary_expression "uVar53 * 2" identifier * number_literal) != identifier) )) ;) })) (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) (if_statement "if (iVar44 == 0) {\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }\n                      else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }" if (parenthesized_expression "(iVar44 == 0)" ( (binary_expression "iVar44 == 0" identifier == number_literal) )) (compound_statement "{\n                        sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                        iVar28 = 0;\n                        sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                        uVar50 = extraout_ECX_01;\n                      }" { (expression_statement "sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);" (call_expression "sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140)" identifier (argument_list "(v,0x5b,(int)pEVar42,uVar53,(int)local_140)" ( identifier , number_literal , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);" (call_expression "sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53)" identifier (argument_list "(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53)" ( identifier , number_literal , identifier , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "uVar50 = extraout_ECX_01;" (assignment_expression "uVar50 = extraout_ECX_01" identifier = identifier) ;) }) (else_clause "else {\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }" else (compound_statement "{\n                        iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);\n                        uVar50 = extraout_ECX_02;\n                        if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }\n                        if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }\n                      }" { (expression_statement "iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42);" (assignment_expression "iVar28 = sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42)" identifier = (call_expression "sqlite3VdbeAddOp3(v,0x1e,local_138,0,(int)pEVar42)" identifier (argument_list "(v,0x1e,local_138,0,(int)pEVar42)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "uVar50 = extraout_ECX_02;" (assignment_expression "uVar50 = extraout_ECX_02" identifier = identifier) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          pOVar33 = v->aOp;\n                          pOVar33[iVar28].p4type = -3;\n                          pOVar33[iVar28].p4.i = uVar53;\n                          uVar50 = uVar53;\n                        }" { (expression_statement "pOVar33 = v->aOp;" (assignment_expression "pOVar33 = v->aOp" identifier = (field_expression "v->aOp" identifier -> field_identifier)) ;) (expression_statement "pOVar33[iVar28].p4type = -3;" (assignment_expression "pOVar33[iVar28].p4type = -3" (field_expression "pOVar33[iVar28].p4type" (subscript_expression "pOVar33[iVar28]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "pOVar33[iVar28].p4.i = uVar53;" (assignment_expression "pOVar33[iVar28].p4.i = uVar53" (field_expression "pOVar33[iVar28].p4.i" (field_expression "pOVar33[iVar28].p4" (subscript_expression "pOVar33[iVar28]" identifier [ identifier ]) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar50 = uVar53;" (assignment_expression "uVar50 = uVar53" identifier = identifier) ;) })) (if_statement "if (-1 < iVar44) {\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }" if (parenthesized_expression "(-1 < iVar44)" ( (binary_expression "-1 < iVar44" number_literal < identifier) )) (compound_statement "{\n                          sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);\n                          in_stack_fffffe58 = pEVar42;\n                          sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);\n                          uVar50 = extraout_ECX_03;\n                          if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }\n                        }" { (expression_statement "sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140);" (call_expression "sqlite3VdbeAddOp3(v,0x5b,(int)pEVar42,uVar53,(int)local_140)" identifier (argument_list "(v,0x5b,(int)pEVar42,uVar53,(int)local_140)" ( identifier , number_literal , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53);" (call_expression "sqlite3VdbeAddOp4Int(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53)" identifier (argument_list "(v,0x82,local_138,(int)local_140,(int)pEVar42,uVar53)" ( identifier , number_literal , identifier , (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "uVar50 = extraout_ECX_03;" (assignment_expression "uVar50 = extraout_ECX_03" identifier = identifier) ;) (if_statement "if (0 < v->nOp) {\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }" if (parenthesized_expression "(0 < v->nOp)" ( (binary_expression "0 < v->nOp" number_literal < (field_expression "v->nOp" identifier -> field_identifier)) )) (compound_statement "{\n                            v->aOp[v->nOp + -1].p5 = 0x10;\n                          }" { (expression_statement "v->aOp[v->nOp + -1].p5 = 0x10;" (assignment_expression "v->aOp[v->nOp + -1].p5 = 0x10" (field_expression "v->aOp[v->nOp + -1].p5" (subscript_expression "v->aOp[v->nOp + -1]" (field_expression "v->aOp" identifier -> field_identifier) [ (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) })) }))) (if_statement "if (uVar53 == 1) {\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }\n                      else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }" if (parenthesized_expression "(uVar53 == 1)" ( (binary_expression "uVar53 == 1" identifier == number_literal) )) (compound_statement "{\n                        sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);\n                      }" { (expression_statement "sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50);" (call_expression "sqlite3ReleaseTempRange(pParse,(int)pEVar42,uVar50)" identifier (argument_list "(pParse,(int)pEVar42,uVar50)" ( identifier , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }) (else_clause "else if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }" else (if_statement "if (pParse->nRangeReg < (int)uVar53) {\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }" if (parenthesized_expression "(pParse->nRangeReg < (int)uVar53)" ( (binary_expression "pParse->nRangeReg < (int)uVar53" (field_expression "pParse->nRangeReg" identifier -> field_identifier) < (cast_expression "(int)uVar53" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                        pParse->nRangeReg = uVar53;\n                        pParse->iRangeReg = (int)pEVar42;\n                      }" { (expression_statement "pParse->nRangeReg = uVar53;" (assignment_expression "pParse->nRangeReg = uVar53" (field_expression "pParse->nRangeReg" identifier -> field_identifier) = identifier) ;) (expression_statement "pParse->iRangeReg = (int)pEVar42;" (assignment_expression "pParse->iRangeReg = (int)pEVar42" (field_expression "pParse->iRangeReg" identifier -> field_identifier) = (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })))) }))) (expression_statement "sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (iVar28 != 0) {\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }\n                      pOVar33 = (Op *)&dummy_22674;\n                      if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }\n                      pOVar33->p2 = v->nOp;\n                    }" { (if_statement "if (iVar28 < 0) {\n                        iVar28 = v->nOp + -1;\n                      }" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar28 = v->nOp + -1;\n                      }" { (expression_statement "iVar28 = v->nOp + -1;" (assignment_expression "iVar28 = v->nOp + -1" identifier = (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n                        pOVar33 = v->aOp + iVar28;\n                      }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pOVar33 = v->aOp + iVar28;\n                      }" { (expression_statement "pOVar33 = v->aOp + iVar28;" (assignment_expression "pOVar33 = v->aOp + iVar28" identifier = (binary_expression "v->aOp + iVar28" (field_expression "v->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar33->p2 = v->nOp;" (assignment_expression "pOVar33->p2 = v->nOp" (field_expression "pOVar33->p2" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }" else (compound_statement "{\n                    sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);\n                  }" { (expression_statement "sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58)" identifier (argument_list "(v,0xc,iVar58,iVar26,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) (expression_statement "bVar18 = true;" (assignment_expression "bVar18 = true" identifier = true) ;) (if_statement "if ((pWInfo_00->field_0x30 & 2) == 0) {\n                    bVar18 = bVar60;\n                  }" if (parenthesized_expression "((pWInfo_00->field_0x30 & 2) == 0)" ( (binary_expression "(pWInfo_00->field_0x30 & 2) == 0" (parenthesized_expression "(pWInfo_00->field_0x30 & 2)" ( (binary_expression "pWInfo_00->field_0x30 & 2" (field_expression "pWInfo_00->field_0x30" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    bVar18 = bVar60;\n                  }" { (expression_statement "bVar18 = bVar60;" (assignment_expression "bVar18 = bVar60" identifier = identifier) ;) })) (expression_statement "bVar60 = bVar18;" (assignment_expression "bVar60 = bVar18" identifier = identifier) ;) (expression_statement "pWVar63 = pWInfo_00->a[0].pWLoop;" (assignment_expression "pWVar63 = pWInfo_00->a[0].pWLoop" identifier = (field_expression "pWInfo_00->a[0].pWLoop" (subscript_expression "pWInfo_00->a[0]" (field_expression "pWInfo_00->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))\n                  {\n                    local_13c = (Index *)0x0;\n                  }\n                  else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }" if (parenthesized_expression "(((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))))" ( (binary_expression "((pWVar63->wsFlags & 0x200) == 0) ||\n                     ((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51)))" (parenthesized_expression "((pWVar63->wsFlags & 0x200) == 0)" ( (binary_expression "(pWVar63->wsFlags & 0x200) == 0" (parenthesized_expression "(pWVar63->wsFlags & 0x200)" ( (binary_expression "pWVar63->wsFlags & 0x200" (field_expression "pWVar63->wsFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51)))" ( (parenthesized_expression "(pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51))" ( (comma_expression "pIVar51 = (pWVar63->u).btree.pIndex, iVar49 != 1 && (local_13c != pIVar51)" (assignment_expression "pIVar51 = (pWVar63->u).btree.pIndex" identifier = (field_expression "(pWVar63->u).btree.pIndex" (field_expression "(pWVar63->u).btree" (parenthesized_expression "(pWVar63->u)" ( (field_expression "pWVar63->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "iVar49 != 1 && (local_13c != pIVar51)" (binary_expression "iVar49 != 1" identifier != number_literal) && (parenthesized_expression "(local_13c != pIVar51)" ( (binary_expression "local_13c != pIVar51" identifier != identifier) )))) )) ))) )) (compound_statement "{\n                    local_13c = (Index *)0x0;\n                  }" { (expression_statement "local_13c = (Index *)0x0;" (assignment_expression "local_13c = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }" else (compound_statement "{\n                    local_13c = pIVar51;\n                    if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }\n                  }" { (expression_statement "local_13c = pIVar51;" (assignment_expression "local_13c = pIVar51" identifier = identifier) ;) (if_statement "if (((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)) {\n                      local_13c = pIVar51;\n                    }" if (parenthesized_expression "(((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2))" ( (binary_expression "((pTVar10->tabFlags & 0x80) != 0) &&\n                       (local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)" (parenthesized_expression "((pTVar10->tabFlags & 0x80) != 0)" ( (binary_expression "(pTVar10->tabFlags & 0x80) != 0" (parenthesized_expression "(pTVar10->tabFlags & 0x80)" ( (binary_expression "pTVar10->tabFlags & 0x80" (field_expression "pTVar10->tabFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2)" ( (comma_expression "local_13c = (Index *)0x0, (pIVar51->field_0x37 & 3) != 2" (assignment_expression "local_13c = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "(pIVar51->field_0x37 & 3) != 2" (parenthesized_expression "(pIVar51->field_0x37 & 3)" ( (binary_expression "pIVar51->field_0x37 & 3" (field_expression "pIVar51->field_0x37" identifier -> field_identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                      local_13c = pIVar51;\n                    }" { (expression_statement "local_13c = pIVar51;" (assignment_expression "local_13c = pIVar51" identifier = identifier) ;) })) }))) (expression_statement "sqlite3WhereEnd(pWInfo_00);" (call_expression "sqlite3WhereEnd(pWInfo_00)" identifier (argument_list "(pWInfo_00)" ( identifier ))) ;) (expression_statement "iVar28 = pParse->addrExplain;" (assignment_expression "iVar28 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar28 != 0) {\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n                    pVVar52 = pParse->pVdbe;\n                    if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }\n                    pOVar33 = (Op *)&dummy_22674;\n                    if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }\n                    iVar28 = pOVar33->p2;\n                  }" { (expression_statement "pVVar52 = pParse->pVdbe;" (assignment_expression "pVVar52 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (iVar28 < 0) {\n                      iVar28 = pVVar52->nOp + -1;\n                    }" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (compound_statement "{\n                      iVar28 = pVVar52->nOp + -1;\n                    }" { (expression_statement "iVar28 = pVVar52->nOp + -1;" (assignment_expression "iVar28 = pVVar52->nOp + -1" identifier = (binary_expression "pVVar52->nOp + -1" (field_expression "pVVar52->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (pVVar52->db->mallocFailed == '\0') {\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }" if (parenthesized_expression "(pVVar52->db->mallocFailed == '\0')" ( (binary_expression "pVVar52->db->mallocFailed == '\0'" (field_expression "pVVar52->db->mallocFailed" (field_expression "pVVar52->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      pOVar33 = pVVar52->aOp + iVar28;\n                    }" { (expression_statement "pOVar33 = pVVar52->aOp + iVar28;" (assignment_expression "pOVar33 = pVVar52->aOp + iVar28" identifier = (binary_expression "pVVar52->aOp + iVar28" (field_expression "pVVar52->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar28 = pOVar33->p2;" (assignment_expression "iVar28 = pOVar33->p2" identifier = (field_expression "pOVar33->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar28;" (assignment_expression "pParse->addrExplain = iVar28" (field_expression "pParse->addrExplain" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar28 = (pWVar8->wc).nTerm;" (assignment_expression "iVar28 = (pWVar8->wc).nTerm" identifier = (field_expression "(pWVar8->wc).nTerm" (parenthesized_expression "(pWVar8->wc)" ( (field_expression "pWVar8->wc" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "iVar44 = iVar49;" (assignment_expression "iVar44 = iVar49" identifier = identifier) ;) }) while (parenthesized_expression "(iVar49 < iVar28)" ( (binary_expression "iVar49 < iVar28" identifier < identifier) )) ;) (expression_statement "iVar58 = pParse->addrExplain;" (assignment_expression "iVar58 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar58 != 0) {\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }" if (parenthesized_expression "(iVar58 != 0)" ( (binary_expression "iVar58 != 0" identifier != number_literal) )) (compound_statement "{\n              pVVar52 = pParse->pVdbe;\nLAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }\n              iVar58 = pOVar33->p2;\n            }" { (expression_statement "pVVar52 = pParse->pVdbe;" (assignment_expression "pVVar52 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (labeled_statement "LAB_0009cb9d:\n              if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }" statement_identifier : (if_statement "if (iVar58 < 0) {\n                iVar58 = pVVar52->nOp + -1;\n              }" if (parenthesized_expression "(iVar58 < 0)" ( (binary_expression "iVar58 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar58 = pVVar52->nOp + -1;\n              }" { (expression_statement "iVar58 = pVVar52->nOp + -1;" (assignment_expression "iVar58 = pVVar52->nOp + -1" identifier = (binary_expression "pVVar52->nOp + -1" (field_expression "pVVar52->nOp" identifier -> field_identifier) + number_literal)) ;) }))) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (pVVar52->db->mallocFailed == '\0') {\n                pOVar33 = pVVar52->aOp + iVar58;\n              }" if (parenthesized_expression "(pVVar52->db->mallocFailed == '\0')" ( (binary_expression "pVVar52->db->mallocFailed == '\0'" (field_expression "pVVar52->db->mallocFailed" (field_expression "pVVar52->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pOVar33 = pVVar52->aOp + iVar58;\n              }" { (expression_statement "pOVar33 = pVVar52->aOp + iVar58;" (assignment_expression "pOVar33 = pVVar52->aOp + iVar58" identifier = (binary_expression "pVVar52->aOp + iVar58" (field_expression "pVVar52->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar58 = pOVar33->p2;" (assignment_expression "iVar58 = pOVar33->p2" identifier = (field_expression "pOVar33->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar58;" (assignment_expression "pParse->addrExplain = iVar58" (field_expression "pParse->addrExplain" identifier -> field_identifier) = identifier) ;) (expression_statement "(pLevel->u).in.nIn = (int)local_13c;" (assignment_expression "(pLevel->u).in.nIn = (int)local_13c" (field_expression "(pLevel->u).in.nIn" (field_expression "(pLevel->u).in" (parenthesized_expression "(pLevel->u)" ( (field_expression "pLevel->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(int)local_13c" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_13c != (Index *)0x0) {\n              pLevel->iIdxCur = (int)pEVar9;\n            }" if (parenthesized_expression "(local_13c != (Index *)0x0)" ( (binary_expression "local_13c != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pLevel->iIdxCur = (int)pEVar9;\n            }" { (expression_statement "pLevel->iIdxCur = (int)pEVar9;" (assignment_expression "pLevel->iIdxCur = (int)pEVar9" (field_expression "pLevel->iIdxCur" identifier -> field_identifier) = (cast_expression "(int)pEVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }))) (if_statement "if (local_134 != (Expr *)0x0) {\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }" if (parenthesized_expression "(local_134 != (Expr *)0x0)" ( (binary_expression "local_134 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_134->pLeft = (Expr *)0x0;\n            sqlite3ExprDeleteNN(db,local_134);\n          }" { (expression_statement "local_134->pLeft = (Expr *)0x0;" (assignment_expression "local_134->pLeft = (Expr *)0x0" (field_expression "local_134->pLeft" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ExprDeleteNN(db,local_134);" (call_expression "sqlite3ExprDeleteNN(db,local_134)" identifier (argument_list "(db,local_134)" ( identifier , identifier ))) ;) })) (expression_statement "iVar58 = v->nOp + -1;" (assignment_expression "iVar58 = v->nOp + -1" identifier = (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < iVar30) {\n            iVar58 = iVar30;\n          }" if (parenthesized_expression "(-1 < iVar30)" ( (binary_expression "-1 < iVar30" number_literal < identifier) )) (compound_statement "{\n            iVar58 = iVar30;\n          }" { (expression_statement "iVar58 = iVar30;" (assignment_expression "iVar58 = iVar30" identifier = identifier) ;) })) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n            pOVar33 = v->aOp + iVar58;\n          }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pOVar33 = v->aOp + iVar58;\n          }" { (expression_statement "pOVar33 = v->aOp + iVar58;" (assignment_expression "pOVar33 = v->aOp + iVar58" identifier = (binary_expression "v->aOp + iVar58" (field_expression "v->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar33->p1 = v->nOp;" (assignment_expression "pOVar33->p1 = v->nOp" (field_expression "pOVar33->p1" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58)" identifier (argument_list "(v,0xb,0,pLevel->addrBrk,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (field_expression "pLevel->addrBrk" identifier -> field_identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(v,iVar26);" (call_expression "sqlite3VdbeResolveLabel(v,iVar26)" identifier (argument_list "(v,iVar26)" ( identifier , identifier ))) ;) (if_statement "if ((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)) {\n            sqlite3DbFreeNN(db,pTabList);\n          }" if (parenthesized_expression "((1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0))" ( (binary_expression "(1 < pWInfo->nLevel) && (pTabList != (SrcList *)0x0)" (parenthesized_expression "(1 < pWInfo->nLevel)" ( (binary_expression "1 < pWInfo->nLevel" number_literal < (field_expression "pWInfo->nLevel" identifier -> field_identifier)) )) && (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            sqlite3DbFreeNN(db,pTabList);\n          }" { (expression_statement "sqlite3DbFreeNN(db,pTabList);" (call_expression "sqlite3DbFreeNN(db,pTabList)" identifier (argument_list "(db,pTabList)" ( identifier , identifier ))) ;) })) (if_statement "if (!bVar60) {\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }" if (parenthesized_expression "(!bVar60)" ( (unary_expression "!bVar60" ! identifier) )) (compound_statement "{\n            disableTerm(pLevel,pWVar54);\n            local_158 = (Index *)0x0;\n            uVar53 = 2;\n            goto LAB_0009b200;\n          }" { (expression_statement "disableTerm(pLevel,pWVar54);" (call_expression "disableTerm(pLevel,pWVar54)" identifier (argument_list "(pLevel,pWVar54)" ( identifier , identifier ))) ;) (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "uVar40 = (pWVar63->u).btree.nTop;" (assignment_expression "uVar40 = (pWVar63->u).btree.nTop" identifier = (field_expression "(pWVar63->u).btree.nTop" (field_expression "(pWVar63->u).btree" (parenthesized_expression "(pWVar63->u)" ( (field_expression "pWVar63->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar4 = (pWVar63->u).btree.nEq;" (assignment_expression "uVar4 = (pWVar63->u).btree.nEq" identifier = (field_expression "(pWVar63->u).btree.nEq" (field_expression "(pWVar63->u).btree" (parenthesized_expression "(pWVar63->u)" ( (field_expression "pWVar63->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "local_118 = (uint)uVar4;" (assignment_expression "local_118 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = (pWVar63->u).btree.nBtm;" (assignment_expression "uVar5 = (pWVar63->u).btree.nBtm" identifier = (field_expression "(pWVar63->u).btree.nBtm" (field_expression "(pWVar63->u).btree" (parenthesized_expression "(pWVar63->u)" ( (field_expression "pWVar63->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "local_158 = (pWVar63->u).btree.pIndex;" (assignment_expression "local_158 = (pWVar63->u).btree.pIndex" identifier = (field_expression "(pWVar63->u).btree.pIndex" (field_expression "(pWVar63->u).btree" (parenthesized_expression "(pWVar63->u)" ( (field_expression "pWVar63->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pEVar31 = (Expr *)pLevel->iIdxCur;" (assignment_expression "pEVar31 = (Expr *)pLevel->iIdxCur" identifier = (cast_expression "(Expr *)pLevel->iIdxCur" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pLevel->iIdxCur" identifier -> field_identifier))) ;) (if_statement "if ((uVar53 & 0x20) == 0) {\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }\n        else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }" if (parenthesized_expression "((uVar53 & 0x20) == 0)" ( (binary_expression "(uVar53 & 0x20) == 0" (parenthesized_expression "(uVar53 & 0x20)" ( (binary_expression "uVar53 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar46 = 0;\n          local_120 = (WhereTerm *)0x0;\n          uVar41 = local_118;\n        }" { (expression_statement "uVar46 = 0;" (assignment_expression "uVar46 = 0" identifier = number_literal) ;) (expression_statement "local_120 = (WhereTerm *)0x0;" (assignment_expression "local_120 = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar41 = local_118;" (assignment_expression "uVar41 = local_118" identifier = identifier) ;) }) (else_clause "else {\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }" else (compound_statement "{\n          uVar46 = (uint)uVar5;\n          local_120 = pWVar63->aLTerm[local_118];\n          uVar41 = local_118 + 1;\n        }" { (expression_statement "uVar46 = (uint)uVar5;" (assignment_expression "uVar46 = (uint)uVar5" identifier = (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_120 = pWVar63->aLTerm[local_118];" (assignment_expression "local_120 = pWVar63->aLTerm[local_118]" identifier = (subscript_expression "pWVar63->aLTerm[local_118]" (field_expression "pWVar63->aLTerm" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "uVar41 = local_118 + 1;" (assignment_expression "uVar41 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) }))) (expression_statement "pEVar38 = (Expr *)pParse->nMem;" (assignment_expression "pEVar38 = (Expr *)pParse->nMem" identifier = (cast_expression "(Expr *)pParse->nMem" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nMem" identifier -> field_identifier))) ;) (expression_statement "local_168 = (Expr *)&pEVar38->affExpr;" (assignment_expression "local_168 = (Expr *)&pEVar38->affExpr" identifier = (cast_expression "(Expr *)&pEVar38->affExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar38->affExpr" & (field_expression "pEVar38->affExpr" identifier -> field_identifier)))) ;) (if_statement "if ((uVar53 & 0x10) == 0) {\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }\n        else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }" if (parenthesized_expression "((uVar53 & 0x10) == 0)" ( (binary_expression "(uVar53 & 0x10) == 0" (parenthesized_expression "(uVar53 & 0x10)" ( (binary_expression "uVar53 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          bVar60 = false;\n          local_12c = (WhereTerm *)0x0;\n        }" { (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (expression_statement "local_12c = (WhereTerm *)0x0;" (assignment_expression "local_12c = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }" else (compound_statement "{\n          local_12c = pWVar63->aLTerm[uVar41];\n          if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }\n          bVar60 = false;\n          if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }\n        }" { (expression_statement "local_12c = pWVar63->aLTerm[uVar41];" (assignment_expression "local_12c = pWVar63->aLTerm[uVar41]" identifier = (subscript_expression "pWVar63->aLTerm[uVar41]" (field_expression "pWVar63->aLTerm" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (uVar46 < uVar40) {\n            uVar46 = (uint)uVar40;\n          }" if (parenthesized_expression "(uVar46 < uVar40)" ( (binary_expression "uVar46 < uVar40" identifier < identifier) )) (compound_statement "{\n            uVar46 = (uint)uVar40;\n          }" { (expression_statement "uVar46 = (uint)uVar40;" (assignment_expression "uVar46 = (uint)uVar40" identifier = (cast_expression "(uint)uVar40" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if ((local_12c->wtFlags & 0x100) != 0) {\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }" if (parenthesized_expression "((local_12c->wtFlags & 0x100) != 0)" ( (binary_expression "(local_12c->wtFlags & 0x100) != 0" (parenthesized_expression "(local_12c->wtFlags & 0x100)" ( (binary_expression "local_12c->wtFlags & 0x100" (field_expression "local_12c->wtFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            pParse->nMem = (int)local_168;\n            pLevel->iLikeRepCntr = (u32)local_168;\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);\n            pLevel->addrLikeRep = v->nOp;\n            uVar53 = pLevel->iLikeRepCntr * 2;\n            pLevel->iLikeRepCntr = uVar53;\n            pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;\n            uVar53 = pWVar63->wsFlags;\n            pEVar38 = (Expr *)pParse->nMem;\n            local_168 = (Expr *)&pEVar38->affExpr;\n          }" { (expression_statement "pParse->nMem = (int)local_168;" (assignment_expression "pParse->nMem = (int)local_168" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pLevel->iLikeRepCntr = (u32)local_168;" (assignment_expression "pLevel->iLikeRepCntr = (u32)local_168" (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier) = (cast_expression "(u32)local_168" ( (type_descriptor "u32" type_identifier) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,1,(int)local_168,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,1,(int)local_168,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pLevel->addrLikeRep = v->nOp;" (assignment_expression "pLevel->addrLikeRep = v->nOp" (field_expression "pLevel->addrLikeRep" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) (expression_statement "uVar53 = pLevel->iLikeRepCntr * 2;" (assignment_expression "uVar53 = pLevel->iLikeRepCntr * 2" identifier = (binary_expression "pLevel->iLikeRepCntr * 2" (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier) * number_literal)) ;) (expression_statement "pLevel->iLikeRepCntr = uVar53;" (assignment_expression "pLevel->iLikeRepCntr = uVar53" (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53;" (assignment_expression "pLevel->iLikeRepCntr =\n                 (uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53" (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier) = (binary_expression "(uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42 | uVar53" (binary_expression "(uint)(local_158->aSortOrder[local_118] == '\x01') ^ (uint)pEVar42" (call_expression "(uint)(local_158->aSortOrder[local_118] == '\x01')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_158->aSortOrder[local_118] == '\x01')" ( (binary_expression "local_158->aSortOrder[local_118] == '\x01'" (subscript_expression "local_158->aSortOrder[local_118]" (field_expression "local_158->aSortOrder" identifier -> field_identifier) [ identifier ]) == (char_literal "'\x01'" ' escape_sequence ')) ))) ^ (cast_expression "(uint)pEVar42" ( (type_descriptor "uint" type_identifier) ) identifier)) | identifier)) ;) (expression_statement "uVar53 = pWVar63->wsFlags;" (assignment_expression "uVar53 = pWVar63->wsFlags" identifier = (field_expression "pWVar63->wsFlags" identifier -> field_identifier)) ;) (expression_statement "pEVar38 = (Expr *)pParse->nMem;" (assignment_expression "pEVar38 = (Expr *)pParse->nMem" identifier = (cast_expression "(Expr *)pParse->nMem" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nMem" identifier -> field_identifier))) ;) (expression_statement "local_168 = (Expr *)&pEVar38->affExpr;" (assignment_expression "local_168 = (Expr *)&pEVar38->affExpr" identifier = (cast_expression "(Expr *)&pEVar38->affExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar38->affExpr" & (field_expression "pEVar38->affExpr" identifier -> field_identifier)))) ;) })) (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (if_statement "if (local_120 == (WhereTerm *)0x0) {\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }" if (parenthesized_expression "(local_120 == (WhereTerm *)0x0)" ( (binary_expression "local_120 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar58 = (int)local_158->aiColumn[local_118];\n            if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }\n          }" { (expression_statement "iVar58 = (int)local_158->aiColumn[local_118];" (assignment_expression "iVar58 = (int)local_158->aiColumn[local_118]" identifier = (cast_expression "(int)local_158->aiColumn[local_118]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_158->aiColumn[local_118]" (field_expression "local_158->aiColumn" identifier -> field_identifier) [ identifier ]))) ;) (if_statement "if (iVar58 < 0) {\n              bVar60 = iVar58 == -2;\n            }\n            else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }" if (parenthesized_expression "(iVar58 < 0)" ( (binary_expression "iVar58 < 0" identifier < number_literal) )) (compound_statement "{\n              bVar60 = iVar58 == -2;\n            }" { (expression_statement "bVar60 = iVar58 == -2;" (assignment_expression "bVar60 = iVar58 == -2" identifier = (binary_expression "iVar58 == -2" identifier == number_literal)) ;) }) (else_clause "else {\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }" else (compound_statement "{\n              bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';\n            }" { (expression_statement "bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0';" (assignment_expression "bVar60 = local_158->pTable->aCol[iVar58].notNull == '\0'" identifier = (binary_expression "local_158->pTable->aCol[iVar58].notNull == '\0'" (field_expression "local_158->pTable->aCol[iVar58].notNull" (subscript_expression "local_158->pTable->aCol[iVar58]" (field_expression "local_158->pTable->aCol" (field_expression "local_158->pTable" identifier -> field_identifier) -> field_identifier) [ identifier ]) . field_identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) }))) })) }))) (expression_statement "local_128 = (Expr *)0x0;" (assignment_expression "local_128 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar53 & 0x80030) == 0x80000) {\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }" if (parenthesized_expression "((uVar53 & 0x80030) == 0x80000)" ( (binary_expression "(uVar53 & 0x80030) == 0x80000" (parenthesized_expression "(uVar53 & 0x80030)" ( (binary_expression "uVar53 & 0x80030" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar58 = pLevel->iLeftJoin;\n          pParse->nMem = (int)local_168;\n          pLevel->regBignull = (int)local_168;\n          pEVar38 = local_168;\n          if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }\n          bVar60 = true;\n          uVar46 = 1;\n          iVar58 = pParse->nLabel + -1;\n          pParse->nLabel = iVar58;\n          local_128 = local_168;\n          pLevel->addrBignull = iVar58;\n          local_168 = (Expr *)&pEVar38->affExpr;\n        }" { (expression_statement "iVar58 = pLevel->iLeftJoin;" (assignment_expression "iVar58 = pLevel->iLeftJoin" identifier = (field_expression "pLevel->iLeftJoin" identifier -> field_identifier)) ;) (expression_statement "pParse->nMem = (int)local_168;" (assignment_expression "pParse->nMem = (int)local_168" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pLevel->regBignull = (int)local_168;" (assignment_expression "pLevel->regBignull = (int)local_168" (field_expression "pLevel->regBignull" identifier -> field_identifier) = (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pEVar38 = local_168;" (assignment_expression "pEVar38 = local_168" identifier = identifier) ;) (if_statement "if (iVar58 != 0) {\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }" if (parenthesized_expression "(iVar58 != 0)" ( (binary_expression "iVar58 != 0" identifier != number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);\n            pEVar38 = (Expr *)pParse->nMem;\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,0,(int)local_168,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,0,(int)local_168,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pEVar38 = (Expr *)pParse->nMem;" (assignment_expression "pEVar38 = (Expr *)pParse->nMem" identifier = (cast_expression "(Expr *)pParse->nMem" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nMem" identifier -> field_identifier))) ;) })) (expression_statement "bVar60 = true;" (assignment_expression "bVar60 = true" identifier = true) ;) (expression_statement "uVar46 = 1;" (assignment_expression "uVar46 = 1" identifier = number_literal) ;) (expression_statement "iVar58 = pParse->nLabel + -1;" (assignment_expression "iVar58 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar58;" (assignment_expression "pParse->nLabel = iVar58" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "local_128 = local_168;" (assignment_expression "local_128 = local_168" identifier = identifier) ;) (expression_statement "pLevel->addrBignull = iVar58;" (assignment_expression "pLevel->addrBignull = iVar58" (field_expression "pLevel->addrBignull" identifier -> field_identifier) = identifier) ;) (expression_statement "local_168 = (Expr *)&pEVar38->affExpr;" (assignment_expression "local_168 = (Expr *)&pEVar38->affExpr" identifier = (cast_expression "(Expr *)&pEVar38->affExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar38->affExpr" & (field_expression "pEVar38->affExpr" identifier -> field_identifier)))) ;) })) (if_statement "if (uVar4 < local_158->nKeyCol) {\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }\n        else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }" if (parenthesized_expression "(uVar4 < local_158->nKeyCol)" ( (binary_expression "uVar4 < local_158->nKeyCol" identifier < (field_expression "local_158->nKeyCol" identifier -> field_identifier)) )) (compound_statement "{\n          if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar17 = uVar40;\n          bVar60 = false;\n          bVar18 = bVar60;\n        }" { (if_statement "if ((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)\n          goto LAB_0009c48d;" if (parenthesized_expression "((Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42)" ( (binary_expression "(Expr *)(uint)(local_158->aSortOrder[local_118] == '\0') == pEVar42" (cast_expression "(Expr *)(uint)(local_158->aSortOrder[local_118] == '\0')" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(local_158->aSortOrder[local_118] == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_158->aSortOrder[local_118] == '\0')" ( (binary_expression "local_158->aSortOrder[local_118] == '\0'" (subscript_expression "local_158->aSortOrder[local_118]" (field_expression "local_158->aSortOrder" identifier -> field_identifier) [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )))) == identifier) )) (goto_statement "goto LAB_0009c48d;" goto statement_identifier ;)) (labeled_statement "LAB_0009ac34:\n          uVar17 = uVar40;" statement_identifier : (expression_statement "uVar17 = uVar40;" (assignment_expression "uVar17 = uVar40" identifier = identifier) ;)) (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (expression_statement "bVar18 = bVar60;" (assignment_expression "bVar18 = bVar60" identifier = identifier) ;) }) (else_clause "else {\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }" else (compound_statement "{\n          if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          pWVar54 = local_12c;\n          bVar18 = false;\n          local_12c = local_120;\n          uVar17 = uVar5 & 0xff;\n          local_120 = pWVar54;\n          uVar5 = uVar40;\n        }" { (if_statement "if ((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)) goto LAB_0009ac34;" if (parenthesized_expression "((local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0))" ( (binary_expression "(local_158->nKeyCol != uVar4) || ((uVar50 & 1) == 0)" (parenthesized_expression "(local_158->nKeyCol != uVar4)" ( (binary_expression "local_158->nKeyCol != uVar4" (field_expression "local_158->nKeyCol" identifier -> field_identifier) != identifier) )) || (parenthesized_expression "((uVar50 & 1) == 0)" ( (binary_expression "(uVar50 & 1) == 0" (parenthesized_expression "(uVar50 & 1)" ( (binary_expression "uVar50 & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009ac34;" goto statement_identifier ;)) (labeled_statement "LAB_0009c48d:\n          pWVar54 = local_12c;" statement_identifier : (expression_statement "pWVar54 = local_12c;" (assignment_expression "pWVar54 = local_12c" identifier = identifier) ;)) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "local_12c = local_120;" (assignment_expression "local_12c = local_120" identifier = identifier) ;) (expression_statement "uVar17 = uVar5 & 0xff;" (assignment_expression "uVar17 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) (expression_statement "local_120 = pWVar54;" (assignment_expression "local_120 = pWVar54" identifier = identifier) ;) (expression_statement "uVar5 = uVar40;" (assignment_expression "uVar5 = uVar40" identifier = identifier) ;) }))) (expression_statement "pVVar52 = pParse->pVdbe;" (assignment_expression "pVVar52 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "pWVar61 = pLevel->pWLoop;" (assignment_expression "pWVar61 = pLevel->pWLoop" identifier = (field_expression "pLevel->pWLoop" identifier -> field_identifier)) ;) (expression_statement "uVar40 = pWVar61->nSkip;" (assignment_expression "uVar40 = pWVar61->nSkip" identifier = (field_expression "pWVar61->nSkip" identifier -> field_identifier)) ;) (expression_statement "iEq = (sqlite3_context *)(uint)uVar40;" (assignment_expression "iEq = (sqlite3_context *)(uint)uVar40" identifier = (cast_expression "(sqlite3_context *)(uint)uVar40" ( (type_descriptor "sqlite3_context *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)uVar40" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pIVar51 = (pWVar61->u).btree.pIndex;" (assignment_expression "pIVar51 = (pWVar61->u).btree.pIndex" identifier = (field_expression "(pWVar61->u).btree.pIndex" (field_expression "(pWVar61->u).btree" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq;" (assignment_expression "psVar57 = (sqlite3_context *)(uint)(pWVar61->u).btree.nEq" identifier = (cast_expression "(sqlite3_context *)(uint)(pWVar61->u).btree.nEq" ( (type_descriptor "sqlite3_context *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(uint)(pWVar61->u).btree.nEq" (field_expression "(uint)(pWVar61->u).btree" (call_expression "(uint)(pWVar61->u)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) ))) . field_identifier) . field_identifier))) ;) (expression_statement "iVar58 = (int)psVar57->argv + (uVar46 - 0x1c);" (assignment_expression "iVar58 = (int)psVar57->argv + (uVar46 - 0x1c)" identifier = (binary_expression "(int)psVar57->argv + (uVar46 - 0x1c)" (cast_expression "(int)psVar57->argv" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar57->argv" identifier -> field_identifier)) + (parenthesized_expression "(uVar46 - 0x1c)" ( (binary_expression "uVar46 - 0x1c" identifier - number_literal) )))) ;) (expression_statement "pParse->nMem = (int)((int)pEVar38 + iVar58);" (assignment_expression "pParse->nMem = (int)((int)pEVar38 + iVar58)" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)((int)pEVar38 + iVar58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)pEVar38 + iVar58)" ( (binary_expression "(int)pEVar38 + iVar58" (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51);" (assignment_expression "pcVar27 = sqlite3IndexAffinityStr(pParse->db,pIVar51)" identifier = (call_expression "sqlite3IndexAffinityStr(pParse->db,pIVar51)" identifier (argument_list "(pParse->db,pIVar51)" ( (field_expression "pParse->db" identifier -> field_identifier) , identifier )))) ;) (expression_statement "pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27);" (assignment_expression "pcVar27 = sqlite3DbStrDup(pParse->db,pcVar27)" identifier = (call_expression "sqlite3DbStrDup(pParse->db,pcVar27)" identifier (argument_list "(pParse->db,pcVar27)" ( (field_expression "pParse->db" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (uVar40 != 0) {\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }" if (parenthesized_expression "(uVar40 != 0)" ( (binary_expression "uVar40 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar26 = pLevel->iIdxCur;\n          if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }\n          iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);\n          if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }\n          pOVar33->p2 = iVar44;\n          p2 = (sqlite3_context *)0x0;\n          do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);\n        }" { (expression_statement "iVar26 = pLevel->iIdxCur;" (assignment_expression "iVar26 = pLevel->iIdxCur" identifier = (field_expression "pLevel->iIdxCur" identifier -> field_identifier)) ;) (if_statement "if (pEVar42 == (Expr *)0x0) {\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }\n          else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }" if (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x19;\n          }" { (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0x25,iVar26,0,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);" (assignment_expression "iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar44 = 0x19;" (assignment_expression "iVar44 = 0x19" identifier = number_literal) ;) }) (else_clause "else {\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }" else (compound_statement "{\n            sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);\n            iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);\n            iVar44 = 0x16;\n          }" { (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0x21,iVar26,0,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58);" (assignment_expression "iVar28 = sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0xb,0,0,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar44 = 0x16;" (assignment_expression "iVar44 = 0x16" identifier = number_literal) ;) }))) (expression_statement "iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168);" (assignment_expression "iVar44 = sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar52,iVar44,iVar26,0,(int)local_168)" identifier (argument_list "(pVVar52,iVar44,iVar26,0,(int)local_168)" ( identifier , identifier , identifier , number_literal , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (pVVar52->db->mallocFailed == '\0') {\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }\n          else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }" if (parenthesized_expression "(pVVar52->db->mallocFailed == '\0')" ( (binary_expression "pVVar52->db->mallocFailed == '\0'" (field_expression "pVVar52->db->mallocFailed" (field_expression "pVVar52->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pOVar33 = pVVar52->aOp;\n            pOVar33[iVar44].p4type = -3;\n            pOVar33[iVar44].p4.pCtx = iEq;\n            pLevel->addrSkip = iVar44;\n            iVar44 = pVVar52->nOp;\n            if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }\n            pOVar33 = pOVar33 + iVar28;\n          }" { (expression_statement "pOVar33 = pVVar52->aOp;" (assignment_expression "pOVar33 = pVVar52->aOp" identifier = (field_expression "pVVar52->aOp" identifier -> field_identifier)) ;) (expression_statement "pOVar33[iVar44].p4type = -3;" (assignment_expression "pOVar33[iVar44].p4type = -3" (field_expression "pOVar33[iVar44].p4type" (subscript_expression "pOVar33[iVar44]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "pOVar33[iVar44].p4.pCtx = iEq;" (assignment_expression "pOVar33[iVar44].p4.pCtx = iEq" (field_expression "pOVar33[iVar44].p4.pCtx" (field_expression "pOVar33[iVar44].p4" (subscript_expression "pOVar33[iVar44]" identifier [ identifier ]) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pLevel->addrSkip = iVar44;" (assignment_expression "pLevel->addrSkip = iVar44" (field_expression "pLevel->addrSkip" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar44 = pVVar52->nOp;" (assignment_expression "iVar44 = pVVar52->nOp" identifier = (field_expression "pVVar52->nOp" identifier -> field_identifier)) ;) (if_statement "if (iVar28 < 0) {\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (compound_statement "{\n              pOVar33 = pVVar52->aOp;\n              iVar28 = iVar44 + -1;\n            }" { (expression_statement "pOVar33 = pVVar52->aOp;" (assignment_expression "pOVar33 = pVVar52->aOp" identifier = (field_expression "pVVar52->aOp" identifier -> field_identifier)) ;) (expression_statement "iVar28 = iVar44 + -1;" (assignment_expression "iVar28 = iVar44 + -1" identifier = (binary_expression "iVar44 + -1" identifier + number_literal)) ;) })) (expression_statement "pOVar33 = pOVar33 + iVar28;" (assignment_expression "pOVar33 = pOVar33 + iVar28" identifier = (binary_expression "pOVar33 + iVar28" identifier + identifier)) ;) }) (else_clause "else {\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }" else (compound_statement "{\n            pLevel->addrSkip = iVar44;\n            pOVar33 = (Op *)&dummy_22674;\n            iVar44 = pVVar52->nOp;\n          }" { (expression_statement "pLevel->addrSkip = iVar44;" (assignment_expression "pLevel->addrSkip = iVar44" (field_expression "pLevel->addrSkip" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (expression_statement "iVar44 = pVVar52->nOp;" (assignment_expression "iVar44 = pVVar52->nOp" identifier = (field_expression "pVVar52->nOp" identifier -> field_identifier)) ;) }))) (expression_statement "pOVar33->p2 = iVar44;" (assignment_expression "pOVar33->p2 = iVar44" (field_expression "pOVar33->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "p2 = (sqlite3_context *)0x0;" (assignment_expression "p2 = (sqlite3_context *)0x0" identifier = (cast_expression "(sqlite3_context *)0x0" ( (type_descriptor "sqlite3_context *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          } while (psVar47 != iEq);" do (compound_statement "{\n            in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);\n            psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);\n            sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);\n            p2 = psVar47;\n          }" { (expression_statement "in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight);" (assignment_expression "in_stack_fffffe58 = (Expr *)((int)p2->argv + (int)&local_168[-1].nHeight)" identifier = (cast_expression "(Expr *)((int)p2->argv + (int)&local_168[-1].nHeight)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p2->argv + (int)&local_168[-1].nHeight)" ( (binary_expression "(int)p2->argv + (int)&local_168[-1].nHeight" (cast_expression "(int)p2->argv" ( (type_descriptor "int" primitive_type) ) (field_expression "p2->argv" identifier -> field_identifier)) + (cast_expression "(int)&local_168[-1].nHeight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_168[-1].nHeight" & (field_expression "local_168[-1].nHeight" (subscript_expression "local_168[-1]" identifier [ number_literal ]) . field_identifier)))) )))) ;) (expression_statement "psVar47 = (sqlite3_context *)((int)&p2->pOut + 1);" (assignment_expression "psVar47 = (sqlite3_context *)((int)&p2->pOut + 1)" identifier = (cast_expression "(sqlite3_context *)((int)&p2->pOut + 1)" ( (type_descriptor "sqlite3_context *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p2->pOut + 1)" ( (binary_expression "(int)&p2->pOut + 1" (cast_expression "(int)&p2->pOut" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p2->pOut" & (field_expression "p2->pOut" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0x59,iVar26,(int)p2,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , (cast_expression "(int)p2" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "p2 = psVar47;" (assignment_expression "p2 = psVar47" identifier = identifier) ;) }) while (parenthesized_expression "(psVar47 != iEq)" ( (binary_expression "psVar47 != iEq" identifier != identifier) )) ;) })) (if_statement "if (iEq < psVar57) {\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }" if (parenthesized_expression "(iEq < psVar57)" ( (binary_expression "iEq < psVar57" identifier < identifier) )) (compound_statement "{\n          local_154 = (int)iEq * 4;\n          do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);\n        }" { (expression_statement "local_154 = (int)iEq * 4;" (assignment_expression "local_154 = (int)iEq * 4" identifier = (binary_expression "(int)iEq * 4" (cast_expression "(int)iEq" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (do_statement "do {\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          } while (psVar57 != iEq);" do (compound_statement "{\n            pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);\n            pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);\n            in_stack_fffffe58 = pEVar42;\n            p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);\n            pEVar35 = local_168;\n            if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }\n            local_168 = pEVar35;\n            if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;\n            pEVar38 = pWVar54->pExpr->pRight;\n            if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }\n            if (pcVar27 == (char *)0x0) goto _L37768;\n            aff2 = pcVar27[(int)iEq];\n            cVar21 = sqlite3CompareAffinity(pEVar38,aff2);\n            if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;\n            bVar23 = 0;\n            uVar22 = pEVar38->op;\n            while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }\n            if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }\n            switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }\n            if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }\n_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);\n            local_154 = local_154 + 4;\n          }" { (expression_statement "pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154);" (assignment_expression "pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + local_154)" identifier = (pointer_expression "*(WhereTerm **)((int)pWVar61->aLTerm + local_154)" * (cast_expression "(WhereTerm **)((int)pWVar61->aLTerm + local_154)" ( (type_descriptor "WhereTerm **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pWVar61->aLTerm + local_154)" ( (binary_expression "(int)pWVar61->aLTerm + local_154" (cast_expression "(int)pWVar61->aLTerm" ( (type_descriptor "int" primitive_type) ) (field_expression "pWVar61->aLTerm" identifier -> field_identifier)) + identifier) ))))) ;) (expression_statement "pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight);" (assignment_expression "pEVar38 = (Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight)" identifier = (cast_expression "(Expr *)((int)iEq->argv + (int)&local_168[-1].nHeight)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)iEq->argv + (int)&local_168[-1].nHeight)" ( (binary_expression "(int)iEq->argv + (int)&local_168[-1].nHeight" (cast_expression "(int)iEq->argv" ( (type_descriptor "int" primitive_type) ) (field_expression "iEq->argv" identifier -> field_identifier)) + (cast_expression "(int)&local_168[-1].nHeight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_168[-1].nHeight" & (field_expression "local_168[-1].nHeight" (subscript_expression "local_168[-1]" identifier [ number_literal ]) . field_identifier)))) )))) ;) (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) (expression_statement "p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38);" (assignment_expression "p1_00 = (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38)" identifier = (cast_expression "(Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "codeEqualityTerm(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38)" identifier (argument_list "(pParse,pWVar54,pLevel,(int)iEq,(int)pEVar42,\n                                             (int)pEVar38)" ( identifier , identifier , identifier , (cast_expression "(int)iEq" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "pEVar35 = local_168;" (assignment_expression "pEVar35 = local_168" identifier = identifier) ;) (if_statement "if (pEVar38 != p1_00) {\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }" if (parenthesized_expression "(pEVar38 != p1_00)" ( (binary_expression "pEVar38 != p1_00" identifier != identifier) )) (compound_statement "{\n              if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }\n            }" { (if_statement "if (iVar58 == 1) {\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }\n              else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }" if (parenthesized_expression "(iVar58 == 1)" ( (binary_expression "iVar58 == 1" identifier == number_literal) )) (compound_statement "{\n                pEVar35 = p1_00;\n                if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }\n              }" { (expression_statement "pEVar35 = p1_00;" (assignment_expression "pEVar35 = p1_00" identifier = identifier) ;) (if_statement "if (local_168 != (Expr *)0x0) {\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }" if (parenthesized_expression "(local_168 != (Expr *)0x0)" ( (binary_expression "local_168 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3ReleaseTempReg(pParse,(int)local_168);\n                }" { (expression_statement "sqlite3ReleaseTempReg(pParse,(int)local_168);" (call_expression "sqlite3ReleaseTempReg(pParse,(int)local_168)" identifier (argument_list "(pParse,(int)local_168)" ( identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) }) (else_clause "else {\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }" else (compound_statement "{\n                sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);\n              }" { (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0x4e,(int)p1_00,(int)pEVar38,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)p1_00" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) })) (expression_statement "local_168 = pEVar35;" (assignment_expression "local_168 = pEVar35" identifier = identifier) ;) (if_statement "if ((pWVar54->eOperator & 1) != 0) {\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }" if (parenthesized_expression "((pWVar54->eOperator & 1) != 0)" ( (binary_expression "(pWVar54->eOperator & 1) != 0" (parenthesized_expression "(pWVar54->eOperator & 1)" ( (binary_expression "pWVar54->eOperator & 1" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;\n              goto _L37768;\n            }" { (if_statement "if (((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))\n              goto LAB_0009adb4;" if (parenthesized_expression "(((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0))" ( (binary_expression "((pWVar54->pExpr->flags & 0x800) != 0) && (pcVar27 != (char *)0x0)" (parenthesized_expression "((pWVar54->pExpr->flags & 0x800) != 0)" ( (binary_expression "(pWVar54->pExpr->flags & 0x800) != 0" (parenthesized_expression "(pWVar54->pExpr->flags & 0x800)" ( (binary_expression "pWVar54->pExpr->flags & 0x800" (field_expression "pWVar54->pExpr->flags" (field_expression "pWVar54->pExpr" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(pcVar27 != (char *)0x0)" ( (binary_expression "pcVar27 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto _L37768;" goto statement_identifier ;) })) (if_statement "if ((pWVar54->eOperator & 0x100) != 0) goto _L37768;" if (parenthesized_expression "((pWVar54->eOperator & 0x100) != 0)" ( (binary_expression "(pWVar54->eOperator & 0x100) != 0" (parenthesized_expression "(pWVar54->eOperator & 0x100)" ( (binary_expression "pWVar54->eOperator & 0x100" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto _L37768;" goto statement_identifier ;)) (expression_statement "pEVar38 = pWVar54->pExpr->pRight;" (assignment_expression "pEVar38 = pWVar54->pExpr->pRight" identifier = (field_expression "pWVar54->pExpr->pRight" (field_expression "pWVar54->pExpr" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)) {\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }" if (parenthesized_expression "(((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0))" ( (binary_expression "((pWVar54->wtFlags & 0x800) == 0) &&\n               (iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)" (parenthesized_expression "((pWVar54->wtFlags & 0x800) == 0)" ( (binary_expression "(pWVar54->wtFlags & 0x800) == 0" (parenthesized_expression "(pWVar54->wtFlags & 0x800)" ( (binary_expression "pWVar54->wtFlags & 0x800" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0)" ( (comma_expression "iVar26 = sqlite3ExprCanBeNull(pEVar38), iVar26 != 0" (assignment_expression "iVar26 = sqlite3ExprCanBeNull(pEVar38)" identifier = (call_expression "sqlite3ExprCanBeNull(pEVar38)" identifier (argument_list "(pEVar38)" ( identifier )))) , (binary_expression "iVar26 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);\n            }" { (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58)" identifier (argument_list "(pVVar52,0x32,(int)iEq->argv + (int)&local_168[-1].nHeight,\n                                pLevel->addrBrk,(int)in_stack_fffffe58)" ( identifier , number_literal , (binary_expression "(int)iEq->argv + (int)&local_168[-1].nHeight" (cast_expression "(int)iEq->argv" ( (type_descriptor "int" primitive_type) ) (field_expression "iEq->argv" identifier -> field_identifier)) + (cast_expression "(int)&local_168[-1].nHeight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_168[-1].nHeight" & (field_expression "local_168[-1].nHeight" (subscript_expression "local_168[-1]" identifier [ number_literal ]) . field_identifier)))) , (field_expression "pLevel->addrBrk" identifier -> field_identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (pcVar27 == (char *)0x0) goto _L37768;" if (parenthesized_expression "(pcVar27 == (char *)0x0)" ( (binary_expression "pcVar27 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto _L37768;" goto statement_identifier ;)) (expression_statement "aff2 = pcVar27[(int)iEq];" (assignment_expression "aff2 = pcVar27[(int)iEq]" identifier = (subscript_expression "pcVar27[(int)iEq]" identifier [ (cast_expression "(int)iEq" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "cVar21 = sqlite3CompareAffinity(pEVar38,aff2);" (assignment_expression "cVar21 = sqlite3CompareAffinity(pEVar38,aff2)" identifier = (call_expression "sqlite3CompareAffinity(pEVar38,aff2)" identifier (argument_list "(pEVar38,aff2)" ( identifier , identifier )))) ;) (if_statement "if ((cVar21 == 'A') || (aff2 == 'A')) goto LAB_0009adb4;" if (parenthesized_expression "((cVar21 == 'A') || (aff2 == 'A'))" ( (binary_expression "(cVar21 == 'A') || (aff2 == 'A')" (parenthesized_expression "(cVar21 == 'A')" ( (binary_expression "cVar21 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(aff2 == 'A')" ( (binary_expression "aff2 == 'A'" identifier == (char_literal "'A'" ' character ')) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (expression_statement "bVar23 = 0;" (assignment_expression "bVar23 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) (while_statement "while ((byte)(uVar22 + 0x56) < 2) {\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }" while (parenthesized_expression "((byte)(uVar22 + 0x56) < 2)" ( (binary_expression "(byte)(uVar22 + 0x56) < 2" (call_expression "(byte)(uVar22 + 0x56)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar22 + 0x56)" ( (binary_expression "uVar22 + 0x56" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n              pEVar38 = pEVar38->pLeft;\n              if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }\n              uVar22 = pEVar38->op;\n            }" { (expression_statement "pEVar38 = pEVar38->pLeft;" (assignment_expression "pEVar38 = pEVar38->pLeft" identifier = (field_expression "pEVar38->pLeft" identifier -> field_identifier)) ;) (if_statement "if (uVar22 == 0xaa) {\n                bVar23 = 1;\n              }" if (parenthesized_expression "(uVar22 == 0xaa)" ( (binary_expression "uVar22 == 0xaa" identifier == number_literal) )) (compound_statement "{\n                bVar23 = 1;\n              }" { (expression_statement "bVar23 = 1;" (assignment_expression "bVar23 = 1" identifier = number_literal) ;) })) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) })) (if_statement "if (uVar22 == 0xad) {\n              uVar22 = pEVar38->op2;\n            }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n              uVar22 = pEVar38->op2;\n            }" { (expression_statement "uVar22 = pEVar38->op2;" (assignment_expression "uVar22 = pEVar38->op2" identifier = (field_expression "pEVar38->op2" identifier -> field_identifier)) ;) })) (switch_statement "switch(uVar22) {\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }" switch (parenthesized_expression "(uVar22)" ( identifier )) (compound_statement "{\n            case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;\n            default:\n              goto _L37768;\n            case 0x96:\n            case 0x98:\n              bVar15 = 'B' < aff2;\n              break;\n            case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;\n            case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;\n            }" { (case_statement "case 's':\n              bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));\n              break;" case (char_literal "'s'" ' character ') : (expression_statement "bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1));" (assignment_expression "bVar15 = (bool)(aff2 == 'B' & (bVar23 ^ 1))" identifier = (cast_expression "(bool)(aff2 == 'B' & (bVar23 ^ 1))" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(aff2 == 'B' & (bVar23 ^ 1))" ( (binary_expression "aff2 == 'B' & (bVar23 ^ 1)" (binary_expression "aff2 == 'B'" identifier == (char_literal "'B'" ' character ')) & (parenthesized_expression "(bVar23 ^ 1)" ( (binary_expression "bVar23 ^ 1" identifier ^ number_literal) ))) )))) ;) (break_statement "break;" break ;)) (case_statement "default:\n              goto _L37768;" default : (goto_statement "goto _L37768;" goto statement_identifier ;)) (case_statement "case 0x96:" case number_literal :) (case_statement "case 0x98:\n              bVar15 = 'B' < aff2;\n              break;" case number_literal : (expression_statement "bVar15 = 'B' < aff2;" (assignment_expression "bVar15 = 'B' < aff2" identifier = (binary_expression "'B' < aff2" (char_literal "'B'" ' character ') < identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x97:\n              bVar15 = (bool)(bVar23 ^ 1);\n              break;" case number_literal : (expression_statement "bVar15 = (bool)(bVar23 ^ 1);" (assignment_expression "bVar15 = (bool)(bVar23 ^ 1)" identifier = (cast_expression "(bool)(bVar23 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar23 ^ 1)" ( (binary_expression "bVar23 ^ 1" identifier ^ number_literal) )))) ;) (break_statement "break;" break ;)) (case_statement "case 0xa4:\n              if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;\n              goto _L37768;" case number_literal : (if_statement "if (('B' < aff2) && (pEVar38->iColumn < 0)) goto LAB_0009adb4;" if (parenthesized_expression "(('B' < aff2) && (pEVar38->iColumn < 0))" ( (binary_expression "('B' < aff2) && (pEVar38->iColumn < 0)" (parenthesized_expression "('B' < aff2)" ( (binary_expression "'B' < aff2" (char_literal "'B'" ' character ') < identifier) )) && (parenthesized_expression "(pEVar38->iColumn < 0)" ( (binary_expression "pEVar38->iColumn < 0" (field_expression "pEVar38->iColumn" identifier -> field_identifier) < number_literal) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto _L37768;" goto statement_identifier ;)) })) (if_statement "if (bVar15) {\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';\n            }" { (labeled_statement "LAB_0009adb4:\n              pcVar27[(int)iEq] = 'A';" statement_identifier : (expression_statement "pcVar27[(int)iEq] = 'A';" (assignment_expression "pcVar27[(int)iEq] = 'A'" (subscript_expression "pcVar27[(int)iEq]" identifier [ (cast_expression "(int)iEq" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (char_literal "'A'" ' character ')) ;)) })) (labeled_statement "_L37768:\n            iEq = (sqlite3_context *)((int)&iEq->pOut + 1);" statement_identifier : (expression_statement "iEq = (sqlite3_context *)((int)&iEq->pOut + 1);" (assignment_expression "iEq = (sqlite3_context *)((int)&iEq->pOut + 1)" identifier = (cast_expression "(sqlite3_context *)((int)&iEq->pOut + 1)" ( (type_descriptor "sqlite3_context *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&iEq->pOut + 1)" ( (binary_expression "(int)&iEq->pOut + 1" (cast_expression "(int)&iEq->pOut" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&iEq->pOut" & (field_expression "iEq->pOut" identifier -> field_identifier))) + number_literal) )))) ;)) (expression_statement "local_154 = local_154 + 4;" (assignment_expression "local_154 = local_154 + 4" identifier = (binary_expression "local_154 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(psVar57 != iEq)" ( (binary_expression "psVar57 != iEq" identifier != identifier) )) ;) })) (if_statement "if ((uVar17 == 0) || (pcVar27 == (char *)0x0)) {\n          local_144 = (char *)0x0;\n        }\n        else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }" if (parenthesized_expression "((uVar17 == 0) || (pcVar27 == (char *)0x0))" ( (binary_expression "(uVar17 == 0) || (pcVar27 == (char *)0x0)" (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) || (parenthesized_expression "(pcVar27 == (char *)0x0)" ( (binary_expression "pcVar27 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          local_144 = (char *)0x0;\n        }" { (expression_statement "local_144 = (char *)0x0;" (assignment_expression "local_144 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }" else (compound_statement "{\n          local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);\n        }" { (expression_statement "local_144 = sqlite3DbStrDup(db,pcVar27 + local_118);" (assignment_expression "local_144 = sqlite3DbStrDup(db,pcVar27 + local_118)" identifier = (call_expression "sqlite3DbStrDup(db,pcVar27 + local_118)" identifier (argument_list "(db,pcVar27 + local_118)" ( identifier , (binary_expression "pcVar27 + local_118" identifier + identifier) )))) ;) }))) (if_statement "if (local_128 == (Expr *)0x0) {\n          iVar58 = pLevel->addrNxt;\n        }\n        else {\n          iVar58 = pLevel->addrBignull;\n        }" if (parenthesized_expression "(local_128 == (Expr *)0x0)" ( (binary_expression "local_128 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar58 = pLevel->addrNxt;\n        }" { (expression_statement "iVar58 = pLevel->addrNxt;" (assignment_expression "iVar58 = pLevel->addrNxt" identifier = (field_expression "pLevel->addrNxt" identifier -> field_identifier)) ;) }) (else_clause "else {\n          iVar58 = pLevel->addrBignull;\n        }" else (compound_statement "{\n          iVar58 = pLevel->addrBignull;\n        }" { (expression_statement "iVar58 = pLevel->addrBignull;" (assignment_expression "iVar58 = pLevel->addrBignull" identifier = (field_expression "pLevel->addrBignull" identifier -> field_identifier)) ;) }))) (if_statement "if (local_120 == (WhereTerm *)0x0) {\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }\n        else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }" if (parenthesized_expression "(local_120 == (WhereTerm *)0x0)" ( (binary_expression "local_120 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          uVar50 = (uint)(uVar4 != 0);\n          uVar53 = local_118;\n          if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }\n        }" { (if_statement "if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" if (parenthesized_expression "(local_12c == (WhereTerm *)0x0)" ( (binary_expression "local_12c == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_148 = 1;\n          }" { (expression_statement "local_148 = 1;" (assignment_expression "local_148 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" else (compound_statement "{\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" { (expression_statement "local_148 = (uint)((local_12c->eOperator & 0x28) != 0);" (assignment_expression "local_148 = (uint)((local_12c->eOperator & 0x28) != 0)" identifier = (call_expression "(uint)((local_12c->eOperator & 0x28) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_12c->eOperator & 0x28) != 0)" ( (binary_expression "(local_12c->eOperator & 0x28) != 0" (parenthesized_expression "(local_12c->eOperator & 0x28)" ( (binary_expression "local_12c->eOperator & 0x28" (field_expression "local_12c->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )))) ;) }))) (expression_statement "uVar50 = (uint)(uVar4 != 0);" (assignment_expression "uVar50 = (uint)(uVar4 != 0)" identifier = (call_expression "(uint)(uVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )))) ;) (expression_statement "uVar53 = local_118;" (assignment_expression "uVar53 = local_118" identifier = identifier) ;) (if_statement "if (bVar18) {\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n            uVar50 = 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x1;\n            uVar41 = local_118 + 1;\n            local_154 = 0;\n          }" { (expression_statement "uVar50 = 1;" (assignment_expression "uVar50 = 1" identifier = number_literal) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" identifier (argument_list "(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)(&local_168->op + local_118)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&local_168->op + local_118)" ( (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier) ))) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_140 = (Expr *)0x1;" (assignment_expression "local_140 = (Expr *)0x1" identifier = (cast_expression "(Expr *)0x1" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar41 = local_118 + 1;" (assignment_expression "uVar41 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "local_154 = 0;" (assignment_expression "local_154 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }" else (if_statement "if (local_128 == (Expr *)0x0) {\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }\n          else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }" if (parenthesized_expression "(local_128 == (Expr *)0x0)" ( (binary_expression "local_128 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar41 = local_118;\n          }" { (expression_statement "local_140 = (Expr *)0x0;" (assignment_expression "local_140 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (expression_statement "uVar41 = local_118;" (assignment_expression "uVar41 = local_118" identifier = identifier) ;) }) (else_clause "else {\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }" else (compound_statement "{\n            uVar50 = 1;\n            uVar41 = local_118 + 1;\n            sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n            local_140 = (Expr *)0x0;\n            local_154 = 1;\n            uVar53 = uVar41;\n          }" { (expression_statement "uVar50 = 1;" (assignment_expression "uVar50 = 1" identifier = number_literal) ;) (expression_statement "uVar41 = local_118 + 1;" (assignment_expression "uVar41 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" identifier (argument_list "(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)(&local_168->op + local_118)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&local_168->op + local_118)" ( (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier) ))) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_140 = (Expr *)0x0;" (assignment_expression "local_140 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (expression_statement "uVar53 = uVar41;" (assignment_expression "uVar53 = uVar41" identifier = identifier) ;) }))))) }) (else_clause "else {\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }" else (compound_statement "{\n          local_154 = (uint)((local_120->eOperator & 0x28) != 0);\n          if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }\n          pEVar38 = local_120->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);\n          if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }\n          if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }\n          uVar22 = pEVar38->op;\n          uVar53 = uVar5 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          uVar41 = uVar53;\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }\n          uVar50 = 1;\n          disableTerm(pLevel,local_120);\n          local_140 = (Expr *)0x0;\n        }" { (expression_statement "local_154 = (uint)((local_120->eOperator & 0x28) != 0);" (assignment_expression "local_154 = (uint)((local_120->eOperator & 0x28) != 0)" identifier = (call_expression "(uint)((local_120->eOperator & 0x28) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_120->eOperator & 0x28) != 0)" ( (binary_expression "(local_120->eOperator & 0x28) != 0" (parenthesized_expression "(local_120->eOperator & 0x28)" ( (binary_expression "local_120->eOperator & 0x28" (field_expression "local_120->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )))) ;) (if_statement "if (local_12c == (WhereTerm *)0x0) {\n            local_148 = 1;\n          }\n          else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" if (parenthesized_expression "(local_12c == (WhereTerm *)0x0)" ( (binary_expression "local_12c == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_148 = 1;\n          }" { (expression_statement "local_148 = 1;" (assignment_expression "local_148 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" else (compound_statement "{\n            local_148 = (uint)((local_12c->eOperator & 0x28) != 0);\n          }" { (expression_statement "local_148 = (uint)((local_12c->eOperator & 0x28) != 0);" (assignment_expression "local_148 = (uint)((local_12c->eOperator & 0x28) != 0)" identifier = (call_expression "(uint)((local_12c->eOperator & 0x28) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_12c->eOperator & 0x28) != 0)" ( (binary_expression "(local_12c->eOperator & 0x28) != 0" (parenthesized_expression "(local_12c->eOperator & 0x28)" ( (binary_expression "local_12c->eOperator & 0x28" (field_expression "local_12c->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )))) ;) }))) (expression_statement "pEVar38 = local_120->pExpr->pRight;" (assignment_expression "pEVar38 = local_120->pExpr->pRight" identifier = (field_expression "local_120->pExpr->pRight" (field_expression "local_120->pExpr" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5);" (call_expression "codeExprOrVector(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5)" identifier (argument_list "(pParse,pEVar38,(int)(&local_168->op + local_118),(uint)uVar5)" ( identifier , identifier , (cast_expression "(int)(&local_168->op + local_118)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&local_168->op + local_118)" ( (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier) ))) , (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (if_statement "if ((local_120->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }" if (parenthesized_expression "((local_120->wtFlags & 0x100) != 0)" ( (binary_expression "(local_120->wtFlags & 0x100) != 0" (parenthesized_expression "(local_120->wtFlags & 0x100)" ( (binary_expression "local_120->wtFlags & 0x100" (field_expression "local_120->wtFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar53 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar53 & 1;\n            pOVar33->p3 = uVar53 >> 1;\n          }" { (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar33 = v->aOp + v->nOp + -1;\n            }" { (expression_statement "pOVar33 = v->aOp + v->nOp + -1;" (assignment_expression "pOVar33 = v->aOp + v->nOp + -1" identifier = (binary_expression "v->aOp + v->nOp + -1" (binary_expression "v->aOp + v->nOp" (field_expression "v->aOp" identifier -> field_identifier) + (field_expression "v->nOp" identifier -> field_identifier)) + number_literal)) ;) })) (expression_statement "uVar53 = pLevel->iLikeRepCntr;" (assignment_expression "uVar53 = pLevel->iLikeRepCntr" identifier = (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier)) ;) (expression_statement "pOVar33->p5 = (ushort)uVar53 & 1;" (assignment_expression "pOVar33->p5 = (ushort)uVar53 & 1" (field_expression "pOVar33->p5" identifier -> field_identifier) = (binary_expression "(ushort)uVar53 & 1" (cast_expression "(ushort)uVar53" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "pOVar33->p3 = uVar53 >> 1;" (assignment_expression "pOVar33->p3 = uVar53 >> 1" (field_expression "pOVar33->p3" identifier -> field_identifier) = (binary_expression "uVar53 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar26 = sqlite3ExprCanBeNull(pEVar38);" (assignment_expression "iVar26 = sqlite3ExprCanBeNull(pEVar38)" identifier = (call_expression "sqlite3ExprCanBeNull(pEVar38)" identifier (argument_list "(pEVar38)" ( identifier )))) ;) (if_statement "if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             );" (call_expression "sqlite3VdbeAddOp3(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             )" identifier (argument_list "(v,0x32,(int)(&local_168->op + local_118),iVar58,(int)in_stack_fffffe58\n                             )" ( identifier , number_literal , (cast_expression "(int)(&local_168->op + local_118)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&local_168->op + local_118)" ( (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier) ))) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (pcVar27 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }" if (parenthesized_expression "(pcVar27 != (char *)0x0)" ( (binary_expression "pcVar27 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n          }" { (expression_statement "updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);" (call_expression "updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63)" identifier (argument_list "(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63)" ( identifier , identifier , (cast_expression "(char *)pWVar63" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) (expression_statement "uVar53 = uVar5 + local_118;" (assignment_expression "uVar53 = uVar5 + local_118" identifier = (binary_expression "uVar5 + local_118" identifier + identifier)) ;) (if_statement "if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n            uVar22 = pEVar38->op2;\n          }" { (expression_statement "uVar22 = pEVar38->op2;" (assignment_expression "uVar22 = pEVar38->op2" identifier = (field_expression "pEVar38->op2" identifier -> field_identifier)) ;) })) (expression_statement "uVar41 = uVar53;" (assignment_expression "uVar41 = uVar53" identifier = identifier) ;) (if_statement "if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(uVar22 == 0xae)" ( (binary_expression "uVar22 == 0xae" identifier == number_literal) )) (compound_statement "{\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }" { (expression_statement "iVar26 = ((pEVar38->x).pList)->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pList)->nExpr" identifier = (field_expression "((pEVar38->x).pList)->nExpr" (parenthesized_expression "((pEVar38->x).pList)" ( (field_expression "(pEVar38->x).pList" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009c725:\n            if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" statement_identifier : (if_statement "if (1 < iVar26) {\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" if (parenthesized_expression "(1 < iVar26)" ( (binary_expression "1 < iVar26" number_literal < identifier) )) (compound_statement "{\n              local_140 = (Expr *)0x0;\n              uVar50 = 1;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" { (expression_statement "local_140 = (Expr *)0x0;" (assignment_expression "local_140 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar50 = 1;" (assignment_expression "uVar50 = 1" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0009be0e;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }" else (if_statement "if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009c725;\n          }" { (expression_statement "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar38->x).pSelect)->pEList->nExpr" (field_expression "((pEVar38->x).pSelect)->pEList" (parenthesized_expression "((pEVar38->x).pSelect)" ( (field_expression "(pEVar38->x).pSelect" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009c725;" goto statement_identifier ;) })))) (expression_statement "uVar50 = 1;" (assignment_expression "uVar50 = 1" identifier = number_literal) ;) (expression_statement "disableTerm(pLevel,local_120);" (call_expression "disableTerm(pLevel,local_120)" identifier (argument_list "(pLevel,local_120)" ( identifier , identifier ))) ;) (expression_statement "local_140 = (Expr *)0x0;" (assignment_expression "local_140 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0009be0e:\n        codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);" statement_identifier : (expression_statement "codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27);" (call_expression "codeApplyAffinity((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27)" identifier (argument_list "((Parse *)pParse->pVdbe,(int)local_168,uVar53,pcVar27)" ( (cast_expression "(Parse *)pParse->pVdbe" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->pVdbe" identifier -> field_identifier)) , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;)) (if_statement "if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)) {\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }" if (parenthesized_expression "((pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41))" ( (binary_expression "(pWVar63->nSkip == 0) || (pWVar63->nSkip != uVar41)" (parenthesized_expression "(pWVar63->nSkip == 0)" ( (binary_expression "pWVar63->nSkip == 0" (field_expression "pWVar63->nSkip" identifier -> field_identifier) == number_literal) )) || (parenthesized_expression "(pWVar63->nSkip != uVar41)" ( (binary_expression "pWVar63->nSkip != uVar41" (field_expression "pWVar63->nSkip" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n          if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }\n          if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }\n        }" { (if_statement "if ((pWVar63->wsFlags & 0x40000) != 0) {\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }" if (parenthesized_expression "((pWVar63->wsFlags & 0x40000) != 0)" ( (binary_expression "(pWVar63->wsFlags & 0x40000) != 0" (parenthesized_expression "(pWVar63->wsFlags & 0x40000)" ( (binary_expression "pWVar63->wsFlags & 0x40000" (field_expression "pWVar63->wsFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x76,(int)pEVar31,0,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (local_128 == (Expr *)0x0) {\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }\n          else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }" if (parenthesized_expression "(local_128 == (Expr *)0x0)" ( (binary_expression "local_128 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n          }" { (expression_statement "in_stack_fffffe58 = local_168;" (assignment_expression "in_stack_fffffe58 = local_168" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);" (call_expression "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41)" identifier (argument_list "(v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41)" ( identifier , (cast_expression "(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)]" (string_literal """" " ") [ (cast_expression "(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&pEVar42->op + local_154 * 2 + uVar50 * 4)" ( (binary_expression "&pEVar42->op + local_154 * 2 + uVar50 * 4" (binary_expression "&pEVar42->op + local_154 * 2" (pointer_expression "&pEVar42->op" & (field_expression "pEVar42->op" identifier -> field_identifier)) + (binary_expression "local_154 * 2" identifier * number_literal)) + (binary_expression "uVar50 * 4" identifier * number_literal)) ))) ])) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }) (else_clause "else {\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }" else (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);\n            pEVar38 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);\n            sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);\n            in_stack_fffffe58 = local_168;\n            sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,1,(int)local_128,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,1,(int)local_128,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_128" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pEVar38 = local_168;" (assignment_expression "pEVar38 = local_168" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41);" (call_expression "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41)" identifier (argument_list "(v,(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)],(int)pEVar31,\n                       iVar58,(int)local_168,uVar41)" ( identifier , (cast_expression "(uint)""[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)]" (string_literal """" " ") [ (cast_expression "(int)(&pEVar42->op + local_154 * 2 + uVar50 * 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&pEVar42->op + local_154 * 2 + uVar50 * 4)" ( (binary_expression "&pEVar42->op + local_154 * 2 + uVar50 * 4" (binary_expression "&pEVar42->op + local_154 * 2" (pointer_expression "&pEVar42->op" & (field_expression "pEVar42->op" identifier -> field_identifier)) + (binary_expression "local_154 * 2" identifier * number_literal)) + (binary_expression "uVar50 * 4" identifier * number_literal)) ))) ])) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38);" (call_expression "sqlite3VdbeAddOp3(v,0xb,0,v->nOp + 2,(int)pEVar38)" identifier (argument_list "(v,0xb,0,v->nOp + 2,(int)pEVar38)" ( identifier , number_literal , number_literal , (binary_expression "v->nOp + 2" (field_expression "v->nOp" identifier -> field_identifier) + number_literal) , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_fffffe58 = local_168;" (assignment_expression "in_stack_fffffe58 = local_168" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154);" (call_expression "sqlite3VdbeAddOp4Int\n                      (v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154)" identifier (argument_list "(v,(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)],(int)pEVar31,iVar58\n                       ,(int)local_168,uVar41 - local_154)" ( identifier , (cast_expression "(uint)""[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)]" (string_literal """" " ") [ (cast_expression "(int)(&pEVar42->op2 + (uint)(1 < uVar41) * 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&pEVar42->op2 + (uint)(1 < uVar41) * 4)" ( (binary_expression "&pEVar42->op2 + (uint)(1 < uVar41) * 4" (pointer_expression "&pEVar42->op2" & (field_expression "pEVar42->op2" identifier -> field_identifier)) + (binary_expression "(uint)(1 < uVar41) * 4" (call_expression "(uint)(1 < uVar41)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < uVar41)" ( (binary_expression "1 < uVar41" number_literal < identifier) ))) * number_literal)) ))) ])) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "uVar41 - local_154" identifier - identifier) ))) ;) }))) })) (if_statement "if (local_12c == (WhereTerm *)0x0) {\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }" if (parenthesized_expression "(local_12c == (WhereTerm *)0x0)" ( (binary_expression "local_12c == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }\n        }" { (if_statement "if (bVar60) {\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }" if (parenthesized_expression "(bVar60)" ( identifier )) (compound_statement "{\n            if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }\n            local_118 = local_118 + 1;\n          }" { (if_statement "if (local_128 == (Expr *)0x0) {\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }" if (parenthesized_expression "(local_128 == (Expr *)0x0)" ( (binary_expression "local_128 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);\n              local_148 = 0;\n            }" { (expression_statement "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" identifier (argument_list "(v,0x48,0,(int)(&local_168->op + local_118),(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (cast_expression "(int)(&local_168->op + local_118)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&local_168->op + local_118)" ( (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier) ))) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" identifier = number_literal) ;) })) (expression_statement "local_118 = local_118 + 1;" (assignment_expression "local_118 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }" else (compound_statement "{\n          puVar45 = &local_168->op + local_118;\n          uVar53 = (uint)uVar17;\n          pEVar38 = local_12c->pExpr->pRight;\n          codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);\n          if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }\n          iVar26 = sqlite3ExprCanBeNull(pEVar38);\n          if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }\n          if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }\n          uVar22 = pEVar38->op;\n          local_118 = uVar53 + local_118;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }\n          if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }\n          disableTerm(pLevel,local_12c);\n        }" { (expression_statement "puVar45 = &local_168->op + local_118;" (assignment_expression "puVar45 = &local_168->op + local_118" identifier = (binary_expression "&local_168->op + local_118" (pointer_expression "&local_168->op" & (field_expression "local_168->op" identifier -> field_identifier)) + identifier)) ;) (expression_statement "uVar53 = (uint)uVar17;" (assignment_expression "uVar53 = (uint)uVar17" identifier = (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pEVar38 = local_12c->pExpr->pRight;" (assignment_expression "pEVar38 = local_12c->pExpr->pRight" identifier = (field_expression "local_12c->pExpr->pRight" (field_expression "local_12c->pExpr" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53);" (call_expression "codeExprOrVector(pParse,pEVar38,(int)puVar45,uVar53)" identifier (argument_list "(pParse,pEVar38,(int)puVar45,uVar53)" ( identifier , identifier , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (if_statement "if ((local_12c->wtFlags & 0x100) != 0) {\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }" if (parenthesized_expression "((local_12c->wtFlags & 0x100) != 0)" ( (binary_expression "(local_12c->wtFlags & 0x100) != 0" (parenthesized_expression "(local_12c->wtFlags & 0x100)" ( (binary_expression "local_12c->wtFlags & 0x100" (field_expression "local_12c->wtFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }\n            uVar50 = pLevel->iLikeRepCntr;\n            pOVar33->p5 = (ushort)uVar50 & 1;\n            pOVar33->p3 = uVar50 >> 1;\n          }" { (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + v->nOp + -1;\n            }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar33 = v->aOp + v->nOp + -1;\n            }" { (expression_statement "pOVar33 = v->aOp + v->nOp + -1;" (assignment_expression "pOVar33 = v->aOp + v->nOp + -1" identifier = (binary_expression "v->aOp + v->nOp + -1" (binary_expression "v->aOp + v->nOp" (field_expression "v->aOp" identifier -> field_identifier) + (field_expression "v->nOp" identifier -> field_identifier)) + number_literal)) ;) })) (expression_statement "uVar50 = pLevel->iLikeRepCntr;" (assignment_expression "uVar50 = pLevel->iLikeRepCntr" identifier = (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier)) ;) (expression_statement "pOVar33->p5 = (ushort)uVar50 & 1;" (assignment_expression "pOVar33->p5 = (ushort)uVar50 & 1" (field_expression "pOVar33->p5" identifier -> field_identifier) = (binary_expression "(ushort)uVar50 & 1" (cast_expression "(ushort)uVar50" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "pOVar33->p3 = uVar50 >> 1;" (assignment_expression "pOVar33->p3 = uVar50 >> 1" (field_expression "pOVar33->p3" identifier -> field_identifier) = (binary_expression "uVar50 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar26 = sqlite3ExprCanBeNull(pEVar38);" (assignment_expression "iVar26 = sqlite3ExprCanBeNull(pEVar38)" identifier = (call_expression "sqlite3ExprCanBeNull(pEVar38)" identifier (argument_list "(pEVar38)" ( identifier )))) ;) (if_statement "if (iVar26 != 0) {\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x32,(int)puVar45,iVar58,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (local_144 != (char *)0x0) {\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }" if (parenthesized_expression "(local_144 != (char *)0x0)" ( (binary_expression "local_144 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);\n            codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);\n          }" { (expression_statement "updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);" (call_expression "updateRangeAffinityStr(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63)" identifier (argument_list "(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63)" ( identifier , identifier , (cast_expression "(char *)pWVar63" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144);" (call_expression "codeApplyAffinity((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144)" identifier (argument_list "((Parse *)pParse->pVdbe,(int)puVar45,uVar53,local_144)" ( (cast_expression "(Parse *)pParse->pVdbe" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->pVdbe" identifier -> field_identifier)) , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) })) (expression_statement "uVar22 = pEVar38->op;" (assignment_expression "uVar22 = pEVar38->op" identifier = (field_expression "pEVar38->op" identifier -> field_identifier)) ;) (expression_statement "local_118 = uVar53 + local_118;" (assignment_expression "local_118 = uVar53 + local_118" identifier = (binary_expression "uVar53 + local_118" identifier + identifier)) ;) (if_statement "if (uVar22 == 0xad) {\n            uVar22 = pEVar38->op2;\n          }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n            uVar22 = pEVar38->op2;\n          }" { (expression_statement "uVar22 = pEVar38->op2;" (assignment_expression "uVar22 = pEVar38->op2" identifier = (field_expression "pEVar38->op2" identifier -> field_identifier)) ;) })) (if_statement "if (uVar22 == 0xae) {\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }\n          else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(uVar22 == 0xae)" ( (binary_expression "uVar22 == 0xae" identifier == number_literal) )) (compound_statement "{\n            iVar26 = ((pEVar38->x).pList)->nExpr;\nLAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }\n          }" { (expression_statement "iVar26 = ((pEVar38->x).pList)->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pList)->nExpr" identifier = (field_expression "((pEVar38->x).pList)->nExpr" (parenthesized_expression "((pEVar38->x).pList)" ( (field_expression "(pEVar38->x).pList" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009d041:\n            if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }" statement_identifier : (if_statement "if (1 < iVar26) {\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }" if (parenthesized_expression "(1 < iVar26)" ( (binary_expression "1 < iVar26" number_literal < identifier) )) (compound_statement "{\n              local_148 = 1;\n              goto LAB_0009bf64;\n            }" { (expression_statement "local_148 = 1;" (assignment_expression "local_148 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0009bf64;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }" else (if_statement "if (uVar22 == 0x88) {\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n            iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;\n            goto LAB_0009d041;\n          }" { (expression_statement "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar26 = ((pEVar38->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar38->x).pSelect)->pEList->nExpr" (field_expression "((pEVar38->x).pSelect)->pEList" (parenthesized_expression "((pEVar38->x).pSelect)" ( (field_expression "(pEVar38->x).pSelect" (parenthesized_expression "(pEVar38->x)" ( (field_expression "pEVar38->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009d041;" goto statement_identifier ;) })))) (expression_statement "disableTerm(pLevel,local_12c);" (call_expression "disableTerm(pLevel,local_12c)" identifier (argument_list "(pLevel,local_12c)" ( identifier , identifier ))) ;) }))) (labeled_statement "LAB_0009bf64:\n        if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }" statement_identifier : (if_statement "if (pcVar27 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar27);\n        }" if (parenthesized_expression "(pcVar27 != (char *)0x0)" ( (binary_expression "pcVar27 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3DbFreeNN(db,pcVar27);\n        }" { (expression_statement "sqlite3DbFreeNN(db,pcVar27);" (call_expression "sqlite3DbFreeNN(db,pcVar27)" identifier (argument_list "(db,pcVar27)" ( identifier , identifier ))) ;) }))) (if_statement "if (local_144 != (char *)0x0) {\n          sqlite3DbFreeNN(db,local_144);\n        }" if (parenthesized_expression "(local_144 != (char *)0x0)" ( (binary_expression "local_144 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3DbFreeNN(db,local_144);\n        }" { (expression_statement "sqlite3DbFreeNN(db,local_144);" (call_expression "sqlite3DbFreeNN(db,local_144)" identifier (argument_list "(db,local_144)" ( identifier , identifier ))) ;) })) (expression_statement "pLevel->p2 = v->nOp;" (assignment_expression "pLevel->p2 = v->nOp" (field_expression "pLevel->p2" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) (if_statement "if (local_118 != 0) {\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }" if (parenthesized_expression "(local_118 != 0)" ( (binary_expression "local_118 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }\n          in_stack_fffffe58 = local_168;\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);\n        }" { (if_statement "if (local_128 != (Expr *)0x0) {\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }" if (parenthesized_expression "(local_128 != (Expr *)0x0)" ( (binary_expression "local_128 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);\n          }" { (expression_statement "sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x14,(int)local_128,v->nOp + 3,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)local_128" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "v->nOp + 3" (field_expression "v->nOp" identifier -> field_identifier) + number_literal) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "in_stack_fffffe58 = local_168;" (assignment_expression "in_stack_fffffe58 = local_168" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118);" (call_expression "sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118)" identifier (argument_list "(v,(uint)")\'&("[local_148 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118)" ( identifier , (cast_expression "(uint)")\'&("[local_148 + (int)pEVar42 * 2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "")\'&("[local_148 + (int)pEVar42 * 2]" (string_literal "")\'&("" " string_content escape_sequence string_content ") [ (binary_expression "local_148 + (int)pEVar42 * 2" identifier + (binary_expression "(int)pEVar42 * 2" (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ])) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) })) (if_statement "if (local_128 != (Expr *)0x0) {\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }" if (parenthesized_expression "(local_128 != (Expr *)0x0)" ( (binary_expression "local_128 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);\n          sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);\n          in_stack_fffffe58 = local_168;\n        }" { (expression_statement "sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x12,(int)local_128,v->nOp + 2,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)local_128" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "v->nOp + 2" (field_expression "v->nOp" identifier -> field_identifier) + number_literal) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140);" (call_expression "sqlite3VdbeAddOp4Int\n                    (v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140)" identifier (argument_list "(v,(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2],(int)pEVar31,iVar58,\n                     (int)local_168,local_118 + (int)local_140)" ( identifier , (cast_expression "(uint)")\'&("[(int)local_140 + (int)pEVar42 * 2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "")\'&("[(int)local_140 + (int)pEVar42 * 2]" (string_literal "")\'&("" " string_content escape_sequence string_content ") [ (binary_expression "(int)local_140 + (int)pEVar42 * 2" (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)pEVar42 * 2" (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ])) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)local_168" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "local_118 + (int)local_140" identifier + (cast_expression "(int)local_140" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "in_stack_fffffe58 = local_168;" (assignment_expression "in_stack_fffffe58 = local_168" identifier = identifier) ;) })) (expression_statement "uVar53 = pWVar63->wsFlags;" (assignment_expression "uVar53 = pWVar63->wsFlags" identifier = (field_expression "pWVar63->wsFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar53 & 0x40000) != 0) {\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }" if (parenthesized_expression "((uVar53 & 0x40000) != 0)" ( (binary_expression "(uVar53 & 0x40000) != 0" (parenthesized_expression "(uVar53 & 0x40000)" ( (binary_expression "uVar53 & 0x40000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);\n          uVar53 = pWVar63->wsFlags;\n        }" { (expression_statement "sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x76,(int)pEVar31,1,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uVar53 = pWVar63->wsFlags;" (assignment_expression "uVar53 = pWVar63->wsFlags" identifier = (field_expression "pWVar63->wsFlags" identifier -> field_identifier)) ;) })) (if_statement "if (((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }\n        else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }" if (parenthesized_expression "(((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0))" ( (binary_expression "((uVar53 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)" (parenthesized_expression "((uVar53 & 0x40) == 0)" ( (binary_expression "(uVar53 & 0x40) == 0" (parenthesized_expression "(uVar53 & 0x40)" ( (binary_expression "uVar53 & 0x40" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((pWInfo->wctrlFlags & 0x20) != 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x20) != 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x20)" ( (binary_expression "pWInfo->wctrlFlags & 0x20" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar60 = false;\n        }" { (if_statement "if ((local_158->pTable->tabFlags & 0x80) == 0) {\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }" if (parenthesized_expression "((local_158->pTable->tabFlags & 0x80) == 0)" ( (binary_expression "(local_158->pTable->tabFlags & 0x80) == 0" (parenthesized_expression "(local_158->pTable->tabFlags & 0x80)" ( (binary_expression "local_158->pTable->tabFlags & 0x80" (field_expression "local_158->pTable->tabFlags" (field_expression "local_158->pTable" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }\n            pPVar32 = pWInfo->pParse;\n            pVVar52 = pPVar32->pVdbe;\n            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;\n            in_stack_fffffe58 = p1;\n            sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);\n            if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }\n            pPVar37 = pPVar32->pToplevel;\n            if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }\n            if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }\n            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;\n          }" { (if_statement "if (((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0))))))" ( (binary_expression "((pWInfo->wctrlFlags & 0x400) != 0) ||\n               (((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))" (parenthesized_expression "((pWInfo->wctrlFlags & 0x400) != 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x400) != 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x400)" ( (binary_expression "pWInfo->wctrlFlags & 0x400" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))" ( (parenthesized_expression "((pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0))))" ( (binary_expression "(pWInfo->wctrlFlags & 0x1000) != 0 &&\n                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))" (binary_expression "(pWInfo->wctrlFlags & 0x1000) != 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x1000)" ( (binary_expression "pWInfo->wctrlFlags & 0x1000" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) != number_literal) && (parenthesized_expression "((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))" ( (parenthesized_expression "(pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0))" ( (binary_expression "pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)" (binary_expression "pWInfo->eOnePass == '\x01'" (field_expression "pWInfo->eOnePass" identifier -> field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) || (parenthesized_expression "(pWVar63->nLTerm == 0)" ( (binary_expression "pWVar63->nLTerm == 0" (field_expression "pWVar63->nLTerm" identifier -> field_identifier) == number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n              pEVar38 = (Expr *)(pParse->nMem + 1);\n              pParse->nMem = (int)pEVar38;\n              sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);\n              sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);\n              in_stack_fffffe58 = pEVar38;\n              goto LAB_0009ca27;\n            }" { (expression_statement "pEVar38 = (Expr *)(pParse->nMem + 1);" (assignment_expression "pEVar38 = (Expr *)(pParse->nMem + 1)" identifier = (cast_expression "(Expr *)(pParse->nMem + 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nMem = (int)pEVar38;" (assignment_expression "pParse->nMem = (int)pEVar38" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x86,(int)pEVar31,(int)pEVar38,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38);" (call_expression "sqlite3VdbeAddOp3(v,0x20,(int)p1,0,(int)pEVar38)" identifier (argument_list "(v,0x20,(int)p1,0,(int)pEVar38)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_fffffe58 = pEVar38;" (assignment_expression "in_stack_fffffe58 = pEVar38" identifier = identifier) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (expression_statement "pPVar32 = pWInfo->pParse;" (assignment_expression "pPVar32 = pWInfo->pParse" identifier = (field_expression "pWInfo->pParse" identifier -> field_identifier)) ;) (expression_statement "pVVar52 = pPVar32->pVdbe;" (assignment_expression "pVVar52 = pPVar32->pVdbe" identifier = (field_expression "pPVar32->pVdbe" identifier -> field_identifier)) ;) (expression_statement "pWInfo->field_0x30 = pWInfo->field_0x30 | 1;" (assignment_expression "pWInfo->field_0x30 = pWInfo->field_0x30 | 1" (field_expression "pWInfo->field_0x30" identifier -> field_identifier) = (binary_expression "pWInfo->field_0x30 | 1" (field_expression "pWInfo->field_0x30" identifier -> field_identifier) | number_literal)) ;) (expression_statement "in_stack_fffffe58 = p1;" (assignment_expression "in_stack_fffffe58 = p1" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1);" (call_expression "sqlite3VdbeAddOp3(pVVar52,0x85,(int)pEVar31,0,(int)p1)" identifier (argument_list "(pVVar52,0x85,(int)pEVar31,0,(int)p1)" ( identifier , number_literal , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if ((pWInfo->wctrlFlags & 0x20) == 0) {\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }" if (parenthesized_expression "((pWInfo->wctrlFlags & 0x20) == 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x20) == 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x20)" ( (binary_expression "pWInfo->wctrlFlags & 0x20" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar60 = false;\n              goto LAB_0009c03e;\n            }" { (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (goto_statement "goto LAB_0009c03e;" goto statement_identifier ;) })) (expression_statement "pPVar37 = pPVar32->pToplevel;" (assignment_expression "pPVar37 = pPVar32->pToplevel" identifier = (field_expression "pPVar32->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pPVar32->pToplevel == (Parse *)0x0) {\n              pPVar37 = pPVar32;\n            }" if (parenthesized_expression "(pPVar32->pToplevel == (Parse *)0x0)" ( (binary_expression "pPVar32->pToplevel == (Parse *)0x0" (field_expression "pPVar32->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pPVar37 = pPVar32;\n            }" { (expression_statement "pPVar37 = pPVar32;" (assignment_expression "pPVar37 = pPVar32" identifier = identifier) ;) })) (if_statement "if (pPVar37->writeMask == 0) {\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(pPVar37->writeMask == 0)" ( (binary_expression "pPVar37->writeMask == 0" (field_expression "pPVar37->writeMask" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              pTVar10 = local_158->pTable;\n              piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));\n              if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }\n              goto LAB_0009ca27;\n            }" { (expression_statement "pTVar10 = local_158->pTable;" (assignment_expression "pTVar10 = local_158->pTable" identifier = (field_expression "local_158->pTable" identifier -> field_identifier)) ;) (expression_statement "piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64));" (assignment_expression "piVar39 = (int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier = (cast_expression "(int *)sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" identifier (argument_list "(pPVar32->db,\n                                                   CONCAT44(in_stack_fffffe68,in_stack_fffffe64))" ( (field_expression "pPVar32->db" identifier -> field_identifier) , (call_expression "CONCAT44(in_stack_fffffe68,in_stack_fffffe64)" identifier (argument_list "(in_stack_fffffe68,in_stack_fffffe64)" ( identifier , identifier ))) ))))) ;) (if_statement "if (piVar39 != (int *)0x0) {\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }" if (parenthesized_expression "(piVar39 != (int *)0x0)" ( (binary_expression "piVar39 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *piVar39 = (int)pTVar10->nCol;\n                uVar40 = local_158->nColumn;\n                if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }\n                sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);\n              }" { (expression_statement "*piVar39 = (int)pTVar10->nCol;" (assignment_expression "*piVar39 = (int)pTVar10->nCol" (pointer_expression "*piVar39" * identifier) = (cast_expression "(int)pTVar10->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTVar10->nCol" identifier -> field_identifier))) ;) (expression_statement "uVar40 = local_158->nColumn;" (assignment_expression "uVar40 = local_158->nColumn" identifier = (field_expression "local_158->nColumn" identifier -> field_identifier)) ;) (if_statement "if (1 < uVar40) {\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }" if (parenthesized_expression "(1 < uVar40)" ( (binary_expression "1 < uVar40" number_literal < identifier) )) (compound_statement "{\n                  piVar14 = local_158->aiColumn;\n                  iVar58 = 0;\n                  do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);\n                }" { (expression_statement "piVar14 = local_158->aiColumn;" (assignment_expression "piVar14 = local_158->aiColumn" identifier = (field_expression "local_158->aiColumn" identifier -> field_identifier)) ;) (expression_statement "iVar58 = 0;" (assignment_expression "iVar58 = 0" identifier = number_literal) ;) (do_statement "do {\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  } while (uVar40 - 1 != iVar58);" do (compound_statement "{\n                    sVar24 = piVar14[iVar58];\n                    iVar58 = iVar58 + 1;\n                    if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }\n                  }" { (expression_statement "sVar24 = piVar14[iVar58];" (assignment_expression "sVar24 = piVar14[iVar58]" identifier = (subscript_expression "piVar14[iVar58]" identifier [ identifier ])) ;) (expression_statement "iVar58 = iVar58 + 1;" (assignment_expression "iVar58 = iVar58 + 1" identifier = (binary_expression "iVar58 + 1" identifier + number_literal)) ;) (if_statement "if ((pTVar10->tabFlags & 0x20) == 0) {\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }" if (parenthesized_expression "((pTVar10->tabFlags & 0x20) == 0)" ( (binary_expression "(pTVar10->tabFlags & 0x20) == 0" (parenthesized_expression "(pTVar10->tabFlags & 0x20)" ( (binary_expression "pTVar10->tabFlags & 0x20" (field_expression "pTVar10->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                      if (-1 < sVar24) goto LAB_0009d40b;\n                    }" { (if_statement "if (-1 < sVar24) goto LAB_0009d40b;" if (parenthesized_expression "(-1 < sVar24)" ( (binary_expression "-1 < sVar24" number_literal < identifier) )) (goto_statement "goto LAB_0009d40b;" goto statement_identifier ;)) }) (else_clause "else if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }" else (if_statement "if (-1 < sVar24) {\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }" if (parenthesized_expression "(-1 < sVar24)" ( (binary_expression "-1 < sVar24" number_literal < identifier) )) (compound_statement "{\n                      sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);\nLAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;\n                    }" { (expression_statement "sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24);" (assignment_expression "sVar24 = sqlite3TableColumnToStorage(pTVar10,sVar24)" identifier = (call_expression "sqlite3TableColumnToStorage(pTVar10,sVar24)" identifier (argument_list "(pTVar10,sVar24)" ( identifier , identifier )))) ;) (labeled_statement "LAB_0009d40b:\n                      piVar39[sVar24 + 1] = iVar58;" statement_identifier : (expression_statement "piVar39[sVar24 + 1] = iVar58;" (assignment_expression "piVar39[sVar24 + 1] = iVar58" (subscript_expression "piVar39[sVar24 + 1]" identifier [ (binary_expression "sVar24 + 1" identifier + number_literal) ]) = identifier) ;)) })))) }) while (parenthesized_expression "(uVar40 - 1 != iVar58)" ( (binary_expression "uVar40 - 1 != iVar58" (binary_expression "uVar40 - 1" identifier - number_literal) != identifier) )) ;) })) (expression_statement "sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf);" (call_expression "sqlite3VdbeChangeP4(pVVar52,-1,(char *)piVar39,-0xf)" identifier (argument_list "(pVVar52,-1,(char *)piVar39,-0xf)" ( identifier , number_literal , (cast_expression "(char *)piVar39" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) })) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (if_statement "if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;" if (parenthesized_expression "(pLevel->iLeftJoin == 0)" ( (binary_expression "pLevel->iLeftJoin == 0" (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_0009c8ce;" goto statement_identifier ;)) }) (else_clause "else {\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }" else (compound_statement "{\n            if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }\nLAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }\n          }" { (if_statement "if (p1 != pEVar31) {\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }" if (parenthesized_expression "(p1 != pEVar31)" ( (binary_expression "p1 != pEVar31" identifier != identifier) )) (compound_statement "{\n              pIVar51 = local_158->pTable->pIndex;\n              if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();\n              (*pcVar16)();\n            }" { (expression_statement "pIVar51 = local_158->pTable->pIndex;" (assignment_expression "pIVar51 = local_158->pTable->pIndex" identifier = (field_expression "local_158->pTable->pIndex" (field_expression "local_158->pTable" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pIVar51 != (Index *)0x0) {\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }" if (parenthesized_expression "(pIVar51 != (Index *)0x0)" ( (binary_expression "pIVar51 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;\n                in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);\n                if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }\n                sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);\n                goto LAB_0009ca27;\n              }" { (labeled_statement "LAB_0009c96b:\n                if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;" statement_identifier : (if_statement "if ((pIVar51->field_0x37 & 3) != 2) goto LAB_0009c960;" if (parenthesized_expression "((pIVar51->field_0x37 & 3) != 2)" ( (binary_expression "(pIVar51->field_0x37 & 3) != 2" (parenthesized_expression "(pIVar51->field_0x37 & 3)" ( (binary_expression "pIVar51->field_0x37 & 3" (field_expression "pIVar51->field_0x37" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009c960;" goto statement_identifier ;))) (expression_statement "in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol);" (assignment_expression "in_stack_fffffe58 = (Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol)" identifier = (cast_expression "(Expr *)sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3GetTempRange(pParse,(uint)pIVar51->nKeyCol)" identifier (argument_list "(pParse,(uint)pIVar51->nKeyCol)" ( identifier , (cast_expression "(uint)pIVar51->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar51->nKeyCol" identifier -> field_identifier)) ))))) ;) (if_statement "if (pIVar51->nKeyCol == 0) {\n                  uVar53 = 0;\n                }\n                else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }" if (parenthesized_expression "(pIVar51->nKeyCol == 0)" ( (binary_expression "pIVar51->nKeyCol == 0" (field_expression "pIVar51->nKeyCol" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                  uVar53 = 0;\n                }" { (expression_statement "uVar53 = 0;" (assignment_expression "uVar53 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }" else (compound_statement "{\n                  iVar58 = 0;\n                  do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);\n                }" { (expression_statement "iVar58 = 0;" (assignment_expression "iVar58 = 0" identifier = number_literal) ;) (do_statement "do {\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  } while (iVar58 < (int)uVar53);" do (compound_statement "{\n                    if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }\n                    puVar45 = &in_stack_fffffe58->op + iVar58;\n                    iVar58 = iVar58 + 1;\n                    sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);\n                    uVar53 = (uint)pIVar51->nKeyCol;\n                  }" { (if_statement "if (local_158->nColumn == 0) {\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }\n                    else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }" if (parenthesized_expression "(local_158->nColumn == 0)" ( (binary_expression "local_158->nColumn == 0" (field_expression "local_158->nColumn" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_0009c9d1:\n                      uVar53 = 0xffffffff;\n                    }" { (labeled_statement "LAB_0009c9d1:\n                      uVar53 = 0xffffffff;" statement_identifier : (expression_statement "uVar53 = 0xffffffff;" (assignment_expression "uVar53 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }" else (compound_statement "{\n                      uVar53 = 0;\n                      if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }\n                    }" { (expression_statement "uVar53 = 0;" (assignment_expression "uVar53 = 0" identifier = number_literal) ;) (if_statement "if (pIVar51->aiColumn[iVar58] != *local_158->aiColumn) {\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }" if (parenthesized_expression "(pIVar51->aiColumn[iVar58] != *local_158->aiColumn)" ( (binary_expression "pIVar51->aiColumn[iVar58] != *local_158->aiColumn" (subscript_expression "pIVar51->aiColumn[iVar58]" (field_expression "pIVar51->aiColumn" identifier -> field_identifier) [ identifier ]) != (pointer_expression "*local_158->aiColumn" * (field_expression "local_158->aiColumn" identifier -> field_identifier))) )) (compound_statement "{\n                        do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);\n                        uVar53 = (uint)(short)uVar53;\n                      }" { (do_statement "do {\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        } while (pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]);" do (compound_statement "{\n                          uVar53 = uVar53 + 1;\n                          if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;\n                        }" { (expression_statement "uVar53 = uVar53 + 1;" (assignment_expression "uVar53 = uVar53 + 1" identifier = (binary_expression "uVar53 + 1" identifier + number_literal)) ;) (if_statement "if (uVar53 == local_158->nColumn) goto LAB_0009c9d1;" if (parenthesized_expression "(uVar53 == local_158->nColumn)" ( (binary_expression "uVar53 == local_158->nColumn" identifier == (field_expression "local_158->nColumn" identifier -> field_identifier)) )) (goto_statement "goto LAB_0009c9d1;" goto statement_identifier ;)) }) while (parenthesized_expression "(pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53])" ( (binary_expression "pIVar51->aiColumn[iVar58] != local_158->aiColumn[uVar53]" (subscript_expression "pIVar51->aiColumn[iVar58]" (field_expression "pIVar51->aiColumn" identifier -> field_identifier) [ identifier ]) != (subscript_expression "local_158->aiColumn[uVar53]" (field_expression "local_158->aiColumn" identifier -> field_identifier) [ identifier ])) )) ;) (expression_statement "uVar53 = (uint)(short)uVar53;" (assignment_expression "uVar53 = (uint)(short)uVar53" identifier = (cast_expression "(uint)(short)uVar53" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar53" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "puVar45 = &in_stack_fffffe58->op + iVar58;" (assignment_expression "puVar45 = &in_stack_fffffe58->op + iVar58" identifier = (binary_expression "&in_stack_fffffe58->op + iVar58" (pointer_expression "&in_stack_fffffe58->op" & (field_expression "in_stack_fffffe58->op" identifier -> field_identifier)) + identifier)) ;) (expression_statement "iVar58 = iVar58 + 1;" (assignment_expression "iVar58 = iVar58 + 1" identifier = (binary_expression "iVar58 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45);" (call_expression "sqlite3VdbeAddOp3(v,0x59,(int)pEVar31,uVar53,(int)puVar45)" identifier (argument_list "(v,0x59,(int)pEVar31,uVar53,(int)puVar45)" ( identifier , number_literal , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uVar53 = (uint)pIVar51->nKeyCol;" (assignment_expression "uVar53 = (uint)pIVar51->nKeyCol" identifier = (cast_expression "(uint)pIVar51->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar51->nKeyCol" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar58 < (int)uVar53)" ( (binary_expression "iVar58 < (int)uVar53" identifier < (cast_expression "(int)uVar53" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (expression_statement "sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53);" (call_expression "sqlite3VdbeAddOp4Int(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53)" identifier (argument_list "(v,0x1d,(int)p1,p2_00,(int)in_stack_fffffe58,uVar53)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (labeled_statement "LAB_0009ca50:\n                    /* WARNING: Does not return */\n              pcVar16 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar16 = (code *)invalidInstructionException();" (assignment_expression "pcVar16 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0009ca27:\n            if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }" statement_identifier : (if_statement "if (pLevel->iLeftJoin == 0) {\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }" if (parenthesized_expression "(pLevel->iLeftJoin == 0)" ( (binary_expression "pLevel->iLeftJoin == 0" (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar60 = false;\n              goto LAB_0009c1d7;\n            }" { (if_statement "if ((pWInfo->wctrlFlags & 0x20) == 0) {\n                bVar60 = false;\n                goto LAB_0009c049;\n              }" if (parenthesized_expression "((pWInfo->wctrlFlags & 0x20) == 0)" ( (binary_expression "(pWInfo->wctrlFlags & 0x20) == 0" (parenthesized_expression "(pWInfo->wctrlFlags & 0x20)" ( (binary_expression "pWInfo->wctrlFlags & 0x20" (field_expression "pWInfo->wctrlFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar60 = false;\n                goto LAB_0009c049;\n              }" { (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) (goto_statement "goto LAB_0009c049;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c8ce:\n              bVar60 = false;" statement_identifier : (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;)) (goto_statement "goto LAB_0009c1d7;" goto statement_identifier ;) }))) }))) (expression_statement "bVar60 = false;" (assignment_expression "bVar60 = false" identifier = false) ;) }) (else_clause "else {\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }" else (compound_statement "{\n          bVar60 = true;\nLAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }\n        }" { (expression_statement "bVar60 = true;" (assignment_expression "bVar60 = true" identifier = true) ;) (labeled_statement "LAB_0009c03e:\n          if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }" statement_identifier : (if_statement "if (pLevel->iLeftJoin == 0) {\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }" if (parenthesized_expression "(pLevel->iLeftJoin == 0)" ( (binary_expression "pLevel->iLeftJoin == 0" (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_0009c049:\n            pEVar9 = local_158->aColExpr;\n            if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }\n          }" { (labeled_statement "LAB_0009c049:\n            pEVar9 = local_158->aColExpr;" statement_identifier : (expression_statement "pEVar9 = local_158->aColExpr;" (assignment_expression "pEVar9 = local_158->aColExpr" identifier = (field_expression "local_158->aColExpr" identifier -> field_identifier)) ;)) (if_statement "if ((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)) {\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }" if (parenthesized_expression "((pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0))" ( (binary_expression "(pEVar9 != (ExprList *)0x0) || ((local_158->field_0x38 & 4) != 0)" (parenthesized_expression "(pEVar9 != (ExprList *)0x0)" ( (binary_expression "pEVar9 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((local_158->field_0x38 & 4) != 0)" ( (binary_expression "(local_158->field_0x38 & 4) != 0" (parenthesized_expression "(local_158->field_0x38 & 4)" ( (binary_expression "local_158->field_0x38 & 4" (field_expression "local_158->field_0x38" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n              pTVar10 = local_158->pTable;\n              uVar53 = 0;\n              do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);\n              w.u.pNC = (NameContext *)&x_1;\n              x_1.db = pWInfo->pParse->db;\n              local_17c = (uint)local_158->nColumn;\n              x_1.iTabCur = (int)p1;\n              x_1.iIdxCur = (int)pEVar31;\n              x_1.pWInfo = pWInfo;\n              if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }\n            }" { (expression_statement "pTVar10 = local_158->pTable;" (assignment_expression "pTVar10 = local_158->pTable" identifier = (field_expression "local_158->pTable" identifier -> field_identifier)) ;) (expression_statement "uVar53 = 0;" (assignment_expression "uVar53 = 0" identifier = number_literal) ;) (do_statement "do {\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              } while (uVar53 < 0x18);" do (compound_statement "{\n                *(undefined4 *)((int)&w.pParse + uVar53) = 0;\n                uVar53 = uVar53 + 4;\n              }" { (expression_statement "*(undefined4 *)((int)&w.pParse + uVar53) = 0;" (assignment_expression "*(undefined4 *)((int)&w.pParse + uVar53) = 0" (pointer_expression "*(undefined4 *)((int)&w.pParse + uVar53)" * (cast_expression "(undefined4 *)((int)&w.pParse + uVar53)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&w.pParse + uVar53)" ( (binary_expression "(int)&w.pParse + uVar53" (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 "uVar53 = uVar53 + 4;" (assignment_expression "uVar53 = uVar53 + 4" identifier = (binary_expression "uVar53 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar53 < 0x18)" ( (binary_expression "uVar53 < 0x18" identifier < number_literal) )) ;) (expression_statement "w.u.pNC = (NameContext *)&x_1;" (assignment_expression "w.u.pNC = (NameContext *)&x_1" (field_expression "w.u.pNC" (field_expression "w.u" identifier . field_identifier) . field_identifier) = (cast_expression "(NameContext *)&x_1" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&x_1" & identifier))) ;) (expression_statement "x_1.db = pWInfo->pParse->db;" (assignment_expression "x_1.db = pWInfo->pParse->db" (field_expression "x_1.db" identifier . field_identifier) = (field_expression "pWInfo->pParse->db" (field_expression "pWInfo->pParse" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_17c = (uint)local_158->nColumn;" (assignment_expression "local_17c = (uint)local_158->nColumn" identifier = (cast_expression "(uint)local_158->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_158->nColumn" identifier -> field_identifier))) ;) (expression_statement "x_1.iTabCur = (int)p1;" (assignment_expression "x_1.iTabCur = (int)p1" (field_expression "x_1.iTabCur" identifier . field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "x_1.iIdxCur = (int)pEVar31;" (assignment_expression "x_1.iIdxCur = (int)pEVar31" (field_expression "x_1.iIdxCur" identifier . field_identifier) = (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "x_1.pWInfo = pWInfo;" (assignment_expression "x_1.pWInfo = pWInfo" (field_expression "x_1.pWInfo" identifier . field_identifier) = identifier) ;) (if_statement "if (local_158->nColumn != 0) {\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }" if (parenthesized_expression "(local_158->nColumn != 0)" ( (binary_expression "local_158->nColumn != 0" (field_expression "local_158->nColumn" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                iVar58 = 0;\n                do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);\n              }" { (expression_statement "iVar58 = 0;" (assignment_expression "iVar58 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                } while (iVar58 < (int)local_17c);" do (compound_statement "{\n                  sVar24 = local_158->aiColumn[iVar58];\n                  iVar26 = (int)sVar24;\n                  if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }\nLAB_0009c1bb:\n                  iVar58 = iVar58 + 1;\n                }" { (expression_statement "sVar24 = local_158->aiColumn[iVar58];" (assignment_expression "sVar24 = local_158->aiColumn[iVar58]" identifier = (subscript_expression "local_158->aiColumn[iVar58]" (field_expression "local_158->aiColumn" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "iVar26 = (int)sVar24;" (assignment_expression "iVar26 = (int)sVar24" identifier = (cast_expression "(int)sVar24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (sVar24 == -2) {\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }" if (parenthesized_expression "(sVar24 == -2)" ( (binary_expression "sVar24 == -2" identifier == number_literal) )) (compound_statement "{\n                    x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;\n                    local_a4._0_2_ = 1;\n                    local_a0.pNC = (NameContext *)0x0;\n                    local_b0.zToken = (char *)sqlite3SelectWalkFail;\n                    local_b4 = exprNodeIsConstant;\n                    if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }" { (expression_statement "x_1.pIdxExpr = pEVar9->a[iVar58].pExpr;" (assignment_expression "x_1.pIdxExpr = pEVar9->a[iVar58].pExpr" (field_expression "x_1.pIdxExpr" identifier . field_identifier) = (field_expression "pEVar9->a[iVar58].pExpr" (subscript_expression "pEVar9->a[iVar58]" (field_expression "pEVar9->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "local_a4._0_2_ = 1;" (assignment_expression "local_a4._0_2_ = 1" (field_expression "local_a4._0_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_a0.pNC = (NameContext *)0x0;" (assignment_expression "local_a0.pNC = (NameContext *)0x0" (field_expression "local_a0.pNC" identifier . field_identifier) = (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0.zToken = (char *)sqlite3SelectWalkFail;" (assignment_expression "local_b0.zToken = (char *)sqlite3SelectWalkFail" (field_expression "local_b0.zToken" identifier . field_identifier) = (cast_expression "(char *)sqlite3SelectWalkFail" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_b4 = exprNodeIsConstant;" (assignment_expression "local_b4 = exprNodeIsConstant" identifier = identifier) ;) (if_statement "if (x_1.pIdxExpr != (Expr *)0x0) {\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" if (parenthesized_expression "(x_1.pIdxExpr != (Expr *)0x0)" ( (binary_expression "x_1.pIdxExpr != (Expr *)0x0" (field_expression "x_1.pIdxExpr" identifier . field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      walkExpr((Walker *)&rTemp,x_1.pIdxExpr);\n                      if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" { (expression_statement "walkExpr((Walker *)&rTemp,x_1.pIdxExpr);" (call_expression "walkExpr((Walker *)&rTemp,x_1.pIdxExpr)" identifier (argument_list "((Walker *)&rTemp,x_1.pIdxExpr)" ( (cast_expression "(Walker *)&rTemp" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rTemp" & identifier)) , (field_expression "x_1.pIdxExpr" identifier . field_identifier) ))) ;) (if_statement "if (local_a4._0_2_ == 0) {\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }" if (parenthesized_expression "(local_a4._0_2_ == 0)" ( (binary_expression "local_a4._0_2_ == 0" (field_expression "local_a4._0_2_" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                        p_Var20 = whereIndexExprTransNode;\n                        iVar26 = x_1.iTabCol;\n                        goto LAB_0009c17b;\n                      }" { (expression_statement "p_Var20 = whereIndexExprTransNode;" (assignment_expression "p_Var20 = whereIndexExprTransNode" identifier = identifier) ;) (expression_statement "iVar26 = x_1.iTabCol;" (assignment_expression "iVar26 = x_1.iTabCol" identifier = (field_expression "x_1.iTabCol" identifier . field_identifier)) ;) (goto_statement "goto LAB_0009c17b;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009c1b2;" goto statement_identifier ;) })) }) (else_clause "else if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }" else (if_statement "if ((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)) {\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }" if (parenthesized_expression "((-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0))" ( (binary_expression "(-1 < sVar24) &&\n                          (pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)" (parenthesized_expression "(-1 < sVar24)" ( (binary_expression "-1 < sVar24" number_literal < identifier) )) && (parenthesized_expression "(pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0)" ( (comma_expression "pCVar11 = pTVar10->aCol, (pCVar11[iVar26].colFlags & 0x20) != 0" (assignment_expression "pCVar11 = pTVar10->aCol" identifier = (field_expression "pTVar10->aCol" identifier -> field_identifier)) , (binary_expression "(pCVar11[iVar26].colFlags & 0x20) != 0" (parenthesized_expression "(pCVar11[iVar26].colFlags & 0x20)" ( (binary_expression "pCVar11[iVar26].colFlags & 0x20" (field_expression "pCVar11[iVar26].colFlags" (subscript_expression "pCVar11[iVar26]" identifier [ identifier ]) . field_identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                    pcVar27 = pCVar11[iVar26].zColl;\n                    p_Var20 = whereIndexExprTransColumn;\n                    if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    x_1.iTabCol = iVar26;\n                    w.xExprCallback = p_Var20;\n                    x_1.iIdxCol = iVar58;\n                    if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }\n                    sqlite3WalkExprList(&w,pWInfo->pOrderBy);\n                    sqlite3WalkExprList(&w,pWInfo->pResultSet);\nLAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;\n                  }" { (expression_statement "pcVar27 = pCVar11[iVar26].zColl;" (assignment_expression "pcVar27 = pCVar11[iVar26].zColl" identifier = (field_expression "pCVar11[iVar26].zColl" (subscript_expression "pCVar11[iVar26]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "p_Var20 = whereIndexExprTransColumn;" (assignment_expression "p_Var20 = whereIndexExprTransColumn" identifier = identifier) ;) (if_statement "if (pcVar27 != (char *)0x0) {\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }" if (parenthesized_expression "(pcVar27 != (char *)0x0)" ( (binary_expression "pcVar27 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar28 = 0;\n                      do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );\n                    }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      } while( true );" do (compound_statement "{\n                        uVar53 = (uint)(byte)pcVar27[iVar28];\n                        if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;\n                        iVar28 = iVar28 + 1;\n                      }" { (expression_statement "uVar53 = (uint)(byte)pcVar27[iVar28];" (assignment_expression "uVar53 = (uint)(byte)pcVar27[iVar28]" identifier = (cast_expression "(uint)(byte)pcVar27[iVar28]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar27[iVar28]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar27[iVar28]" identifier [ identifier ])))) ;) (if_statement "if (uVar53 == (byte)"BINARY"[iVar28]) {\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }\n                        else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;" if (parenthesized_expression "(uVar53 == (byte)"BINARY"[iVar28])" ( (binary_expression "uVar53 == (byte)"BINARY"[iVar28]" identifier == (cast_expression "(byte)"BINARY"[iVar28]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar28]" (string_literal ""BINARY"" " string_content ") [ identifier ]))) )) (compound_statement "{\n                          p_Var20 = whereIndexExprTransColumn;\n                          if (uVar53 == 0) break;\n                        }" { (expression_statement "p_Var20 = whereIndexExprTransColumn;" (assignment_expression "p_Var20 = whereIndexExprTransColumn" identifier = identifier) ;) (if_statement "if (uVar53 == 0) break;" if (parenthesized_expression "(uVar53 == 0)" ( (binary_expression "uVar53 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;" else (if_statement "if (""[uVar53] != ""[(byte)"BINARY"[iVar28]]) goto LAB_0009c1bb;" if (parenthesized_expression "(""[uVar53] != ""[(byte)"BINARY"[iVar28]])" ( (binary_expression """[uVar53] != ""[(byte)"BINARY"[iVar28]]" (subscript_expression """[uVar53]" (string_literal """" " ") [ identifier ]) != (subscript_expression """[(byte)"BINARY"[iVar28]]" (string_literal """" " ") [ (cast_expression "(byte)"BINARY"[iVar28]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar28]" (string_literal ""BINARY"" " string_content ") [ identifier ])) ])) )) (goto_statement "goto LAB_0009c1bb;" goto statement_identifier ;)))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0009c17b:\n                    x_1.iTabCol = iVar26;" statement_identifier : (expression_statement "x_1.iTabCol = iVar26;" (assignment_expression "x_1.iTabCol = iVar26" (field_expression "x_1.iTabCol" identifier . field_identifier) = identifier) ;)) (expression_statement "w.xExprCallback = p_Var20;" (assignment_expression "w.xExprCallback = p_Var20" (field_expression "w.xExprCallback" identifier . field_identifier) = identifier) ;) (expression_statement "x_1.iIdxCol = iVar58;" (assignment_expression "x_1.iIdxCol = iVar58" (field_expression "x_1.iIdxCol" identifier . field_identifier) = identifier) ;) (if_statement "if (pWInfo->pWhere != (Expr *)0x0) {\n                      walkExpr(&w,pWInfo->pWhere);\n                    }" if (parenthesized_expression "(pWInfo->pWhere != (Expr *)0x0)" ( (binary_expression "pWInfo->pWhere != (Expr *)0x0" (field_expression "pWInfo->pWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      walkExpr(&w,pWInfo->pWhere);\n                    }" { (expression_statement "walkExpr(&w,pWInfo->pWhere);" (call_expression "walkExpr(&w,pWInfo->pWhere)" identifier (argument_list "(&w,pWInfo->pWhere)" ( (pointer_expression "&w" & identifier) , (field_expression "pWInfo->pWhere" identifier -> field_identifier) ))) ;) })) (expression_statement "sqlite3WalkExprList(&w,pWInfo->pOrderBy);" (call_expression "sqlite3WalkExprList(&w,pWInfo->pOrderBy)" identifier (argument_list "(&w,pWInfo->pOrderBy)" ( (pointer_expression "&w" & identifier) , (field_expression "pWInfo->pOrderBy" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3WalkExprList(&w,pWInfo->pResultSet);" (call_expression "sqlite3WalkExprList(&w,pWInfo->pResultSet)" identifier (argument_list "(&w,pWInfo->pResultSet)" ( (pointer_expression "&w" & identifier) , (field_expression "pWInfo->pResultSet" identifier -> field_identifier) ))) ;) (labeled_statement "LAB_0009c1b2:\n                    local_17c = (uint)local_158->nColumn;" statement_identifier : (expression_statement "local_17c = (uint)local_158->nColumn;" (assignment_expression "local_17c = (uint)local_158->nColumn" identifier = (cast_expression "(uint)local_158->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_158->nColumn" identifier -> field_identifier))) ;)) })))) (labeled_statement "LAB_0009c1bb:\n                  iVar58 = iVar58 + 1;" statement_identifier : (expression_statement "iVar58 = iVar58 + 1;" (assignment_expression "iVar58 = iVar58 + 1" identifier = (binary_expression "iVar58 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar58 < (int)local_17c)" ( (binary_expression "iVar58 < (int)local_17c" identifier < (cast_expression "(int)local_17c" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) })) (labeled_statement "LAB_0009c1d7:\n            if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }" statement_identifier : (if_statement "if (local_158->pPartIdxWhere != (Expr *)0x0) {\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }" if (parenthesized_expression "(local_158->pPartIdxWhere != (Expr *)0x0)" ( (binary_expression "local_158->pPartIdxWhere != (Expr *)0x0" (field_expression "local_158->pPartIdxWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);\n            }" { (expression_statement "whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC);" (call_expression "whereApplyPartialIndexConstraints(local_158->pPartIdxWhere,(int)p1,pWC)" identifier (argument_list "(local_158->pPartIdxWhere,(int)p1,pWC)" ( (field_expression "local_158->pPartIdxWhere" identifier -> field_identifier) , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }))) }))) }))) (expression_statement "uVar53 = pWVar63->wsFlags;" (assignment_expression "uVar53 = pWVar63->wsFlags" identifier = (field_expression "pWVar63->wsFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar53 & 0x1000) == 0) {\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }\n        else {\n          pLevel->op = 0xad;\n        }" if (parenthesized_expression "((uVar53 & 0x1000) == 0)" ( (binary_expression "(uVar53 & 0x1000) == 0" (parenthesized_expression "(uVar53 & 0x1000)" ( (binary_expression "uVar53 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';\n        }" { (expression_statement "pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04';" (assignment_expression "pLevel->op = (pEVar42 == (Expr *)0x0) + '\x04'" (field_expression "pLevel->op" identifier -> field_identifier) = (binary_expression "(pEVar42 == (Expr *)0x0) + '\x04'" (parenthesized_expression "(pEVar42 == (Expr *)0x0)" ( (binary_expression "pEVar42 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) + (char_literal "'\x04'" ' escape_sequence '))) ;) }) (else_clause "else {\n          pLevel->op = 0xad;\n        }" else (compound_statement "{\n          pLevel->op = 0xad;\n        }" { (expression_statement "pLevel->op = 0xad;" (assignment_expression "pLevel->op = 0xad" (field_expression "pLevel->op" identifier -> field_identifier) = number_literal) ;) }))) (expression_statement "pLevel->p1 = (int)pEVar31;" (assignment_expression "pLevel->p1 = (int)pEVar31" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pLevel->p3 = (byte)(uVar53 >> 0x10) & 1;" (assignment_expression "pLevel->p3 = (byte)(uVar53 >> 0x10) & 1" (field_expression "pLevel->p3" identifier -> field_identifier) = (binary_expression "(byte)(uVar53 >> 0x10) & 1" (call_expression "(byte)(uVar53 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar53 >> 0x10)" ( (binary_expression "uVar53 >> 0x10" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if ((uVar53 & 0xf) == 0) {\n          pLevel->p5 = '\x01';\n        }" if (parenthesized_expression "((uVar53 & 0xf) == 0)" ( (binary_expression "(uVar53 & 0xf) == 0" (parenthesized_expression "(uVar53 & 0xf)" ( (binary_expression "uVar53 & 0xf" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pLevel->p5 = '\x01';\n        }" { (expression_statement "pLevel->p5 = '\x01';" (assignment_expression "pLevel->p5 = '\x01'" (field_expression "pLevel->p5" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (if_statement "if (!bVar60) {\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }" if (parenthesized_expression "(!bVar60)" ( (unary_expression "!bVar60" ! identifier) )) (compound_statement "{\n          uVar53 = 1;\n          goto LAB_0009b200;\n        }" { (expression_statement "uVar53 = 1;" (assignment_expression "uVar53 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) }) (else_clause "else {\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }" else (compound_statement "{\n        pWVar54 = *pWVar63->aLTerm;\n        pEVar31 = (Expr *)(pParse->nMem + 1);\n        pParse->nMem = (int)pEVar31;\n        in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);\n        if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }\n        sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);\n        pLevel->op = 0xad;\n        if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }\n      }" { (expression_statement "pWVar54 = *pWVar63->aLTerm;" (assignment_expression "pWVar54 = *pWVar63->aLTerm" identifier = (pointer_expression "*pWVar63->aLTerm" * (field_expression "pWVar63->aLTerm" identifier -> field_identifier))) ;) (expression_statement "pEVar31 = (Expr *)(pParse->nMem + 1);" (assignment_expression "pEVar31 = (Expr *)(pParse->nMem + 1)" identifier = (cast_expression "(Expr *)(pParse->nMem + 1)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nMem + 1)" ( (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nMem = (int)pEVar31;" (assignment_expression "pParse->nMem = (int)pEVar31" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31);" (assignment_expression "in_stack_fffffe58 =\n             (Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31)" identifier = (cast_expression "(Expr *)codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "codeEqualityTerm(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31)" identifier (argument_list "(pParse,pWVar54,pLevel,0,(int)pEVar42,(int)pEVar31)" ( identifier , identifier , identifier , number_literal , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (if_statement "if ((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)) {\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }" if (parenthesized_expression "((pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0))" ( (binary_expression "(pEVar31 != in_stack_fffffe58) && (pEVar31 != (Expr *)0x0)" (parenthesized_expression "(pEVar31 != in_stack_fffffe58)" ( (binary_expression "pEVar31 != in_stack_fffffe58" identifier != identifier) )) && (parenthesized_expression "(pEVar31 != (Expr *)0x0)" ( (binary_expression "pEVar31 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          sqlite3ReleaseTempReg(pParse,(int)pEVar31);\n        }" { (expression_statement "sqlite3ReleaseTempReg(pParse,(int)pEVar31);" (call_expression "sqlite3ReleaseTempReg(pParse,(int)pEVar31)" identifier (argument_list "(pParse,(int)pEVar31)" ( identifier , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x1f,(int)p1,pLevel->addrNxt,(int)in_stack_fffffe58)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , (field_expression "pLevel->addrNxt" identifier -> field_identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pLevel->op = 0xad;" (assignment_expression "pLevel->op = 0xad" (field_expression "pLevel->op" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }" if (parenthesized_expression "((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0)" ( (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0\n            && ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0" (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0" (parenthesized_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4))" ( (binary_expression "*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)" (pointer_expression "*(uint *)((int)&pWVar54->prereqAll + 4)" * (cast_expression "(uint *)((int)&pWVar54->prereqAll + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar54->prereqAll + 4)" ( (binary_expression "(int)&pWVar54->prereqAll + 4" (cast_expression "(int)&pWVar54->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar54->prereqAll" & (field_expression "pWVar54->prereqAll" identifier -> field_identifier))) + number_literal) )))) & (pointer_expression "*(uint *)((int)&pLevel->notReady + 4)" * (cast_expression "(uint *)((int)&pLevel->notReady + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pLevel->notReady + 4)" ( (binary_expression "(int)&pLevel->notReady + 4" (cast_expression "(int)&pLevel->notReady" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLevel->notReady" & (field_expression "pLevel->notReady" identifier -> field_identifier))) + number_literal) ))))) )) == number_literal) && (binary_expression "((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0" (parenthesized_expression "((uint)pWVar54->prereqAll & (uint)pLevel->notReady)" ( (binary_expression "(uint)pWVar54->prereqAll & (uint)pLevel->notReady" (cast_expression "(uint)pWVar54->prereqAll" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar54->prereqAll" identifier -> field_identifier)) & (cast_expression "(uint)pLevel->notReady" ( (type_descriptor "uint" type_identifier) ) (field_expression "pLevel->notReady" identifier -> field_identifier))) )) == number_literal)) )) (compound_statement "{\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          local_158 = (Index *)0x0;\n          uVar53 = 2;\n          goto LAB_0009b200;\n        }" { (expression_statement "pWVar54->wtFlags = pWVar54->wtFlags | 4;" (assignment_expression "pWVar54->wtFlags = pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) = (binary_expression "pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0009b200;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }" else (compound_statement "{\n      uVar53 = (uint)pWVar63->nLTerm;\n      pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);\n      local_154 = pLevel->addrBrk;\n      pWVar61 = pWVar63;\n      if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }\nLAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);\n      sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);\n      uVar22 = (pWVar61->u).vtab.needFree;\n      pcVar27 = (pWVar61->u).vtab.idxStr;\n      in_stack_fffffe58 = pEVar31;\n      iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);\n      sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);\n      (pWVar61->u).vtab.needFree = '\0';\n      pLevel->p1 = (int)p1;\n      uVar53 = uVar53 - 1;\n      iVar58 = uVar53 * 4;\n      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;\n      local_184 = (pLevel->u).in.nIn;\n      pLevel->p2 = v->nOp;\n      for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }\n    }" { (expression_statement "uVar53 = (uint)pWVar63->nLTerm;" (assignment_expression "uVar53 = (uint)pWVar63->nLTerm" identifier = (cast_expression "(uint)pWVar63->nLTerm" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar63->nLTerm" identifier -> field_identifier))) ;) (expression_statement "pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2);" (assignment_expression "pEVar31 = (Expr *)sqlite3GetTempRange(pParse,uVar53 + 2)" identifier = (cast_expression "(Expr *)sqlite3GetTempRange(pParse,uVar53 + 2)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3GetTempRange(pParse,uVar53 + 2)" identifier (argument_list "(pParse,uVar53 + 2)" ( identifier , (binary_expression "uVar53 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_154 = pLevel->addrBrk;" (assignment_expression "local_154 = pLevel->addrBrk" identifier = (field_expression "pLevel->addrBrk" identifier -> field_identifier)) ;) (expression_statement "pWVar61 = pWVar63;" (assignment_expression "pWVar61 = pWVar63" identifier = identifier) ;) (if_statement "if (uVar53 != 0) {\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }" if (parenthesized_expression "(uVar53 != 0)" ( (binary_expression "uVar53 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar50 = 0;\n        do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);\n      }" { (expression_statement "uVar50 = 0;" (assignment_expression "uVar50 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        } while (uVar53 != uVar50);" do (compound_statement "{\n          while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }\n          if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }\n          uVar50 = uVar50 + 1;\n          codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);\n        }" { (while_statement "while( true ) {\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            puVar45 = &pEVar31->op2 + uVar50;\n            pWVar54 = pWVar63->aLTerm[uVar50];\n            if (pWVar54 != (WhereTerm *)0x0) break;\nLAB_0009af14:\n            uVar50 = uVar50 + 1;\n            if (uVar53 == uVar50) goto LAB_0009af4f;\n          }" { (expression_statement "puVar45 = &pEVar31->op2 + uVar50;" (assignment_expression "puVar45 = &pEVar31->op2 + uVar50" identifier = (binary_expression "&pEVar31->op2 + uVar50" (pointer_expression "&pEVar31->op2" & (field_expression "pEVar31->op2" identifier -> field_identifier)) + identifier)) ;) (expression_statement "pWVar54 = pWVar63->aLTerm[uVar50];" (assignment_expression "pWVar54 = pWVar63->aLTerm[uVar50]" identifier = (subscript_expression "pWVar63->aLTerm[uVar50]" (field_expression "pWVar63->aLTerm" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (pWVar54 != (WhereTerm *)0x0) break;" if (parenthesized_expression "(pWVar54 != (WhereTerm *)0x0)" ( (binary_expression "pWVar54 != (WhereTerm *)0x0" identifier != (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0009af14:\n            uVar50 = uVar50 + 1;" statement_identifier : (expression_statement "uVar50 = uVar50 + 1;" (assignment_expression "uVar50 = uVar50 + 1" identifier = (binary_expression "uVar50 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar53 == uVar50) goto LAB_0009af4f;" if (parenthesized_expression "(uVar53 == uVar50)" ( (binary_expression "uVar53 == uVar50" identifier == identifier) )) (goto_statement "goto LAB_0009af4f;" goto statement_identifier ;)) })) (if_statement "if ((pWVar54->eOperator & 1) != 0) {\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }" if (parenthesized_expression "((pWVar54->eOperator & 1) != 0)" ( (binary_expression "(pWVar54->eOperator & 1) != 0" (parenthesized_expression "(pWVar54->eOperator & 1)" ( (binary_expression "pWVar54->eOperator & 1" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            in_stack_fffffe58 = pEVar42;\n            codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);\n            local_154 = pLevel->addrNxt;\n            goto LAB_0009af14;\n          }" { (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) (expression_statement "codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45);" (call_expression "codeEqualityTerm(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45)" identifier (argument_list "(pParse,pWVar54,pLevel,uVar50,(int)pEVar42,(int)puVar45)" ( identifier , identifier , identifier , identifier , (cast_expression "(int)pEVar42" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_154 = pLevel->addrNxt;" (assignment_expression "local_154 = pLevel->addrNxt" identifier = (field_expression "pLevel->addrNxt" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0009af14;" goto statement_identifier ;) })) (expression_statement "uVar50 = uVar50 + 1;" (assignment_expression "uVar50 = uVar50 + 1" identifier = (binary_expression "uVar50 + 1" identifier + number_literal)) ;) (expression_statement "codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1);" (call_expression "codeExprOrVector(pParse,pWVar54->pExpr->pRight,(int)puVar45,1)" identifier (argument_list "(pParse,pWVar54->pExpr->pRight,(int)puVar45,1)" ( identifier , (field_expression "pWVar54->pExpr->pRight" (field_expression "pWVar54->pExpr" identifier -> field_identifier) -> field_identifier) , (cast_expression "(int)puVar45" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) }) while (parenthesized_expression "(uVar53 != uVar50)" ( (binary_expression "uVar53 != uVar50" identifier != identifier) )) ;) })) (labeled_statement "LAB_0009af4f:\n      sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,(pWVar61->u).vtab.idxNum,(int)pEVar31,(int)in_stack_fffffe58)" ( identifier , number_literal , (field_expression "(pWVar61->u).vtab.idxNum" (field_expression "(pWVar61->u).vtab" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (expression_statement "sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,uVar53,(int)&pEVar31->affExpr,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , (cast_expression "(int)&pEVar31->affExpr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar31->affExpr" & (field_expression "pEVar31->affExpr" identifier -> field_identifier))) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uVar22 = (pWVar61->u).vtab.needFree;" (assignment_expression "uVar22 = (pWVar61->u).vtab.needFree" identifier = (field_expression "(pWVar61->u).vtab.needFree" (field_expression "(pWVar61->u).vtab" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar27 = (pWVar61->u).vtab.idxStr;" (assignment_expression "pcVar27 = (pWVar61->u).vtab.idxStr" identifier = (field_expression "(pWVar61->u).vtab.idxStr" (field_expression "(pWVar61->u).vtab" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "in_stack_fffffe58 = pEVar31;" (assignment_expression "in_stack_fffffe58 = pEVar31" identifier = identifier) ;) (expression_statement "iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31);" (assignment_expression "iVar58 = sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31)" identifier = (call_expression "sqlite3VdbeAddOp3(v,9,(int)p1,local_154,(int)pEVar31)" identifier (argument_list "(v,9,(int)p1,local_154,(int)pEVar31)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)pEVar31" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9);" (call_expression "sqlite3VdbeChangeP4(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9)" identifier (argument_list "(v,iVar58,pcVar27,-(uint)(uVar22 == '\0') | 0xfffffff9)" ( identifier , identifier , identifier , (binary_expression "-(uint)(uVar22 == '\0') | 0xfffffff9" (unary_expression "-(uint)(uVar22 == '\0')" - (call_expression "(uint)(uVar22 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar22 == '\0')" ( (binary_expression "uVar22 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) | number_literal) ))) ;) (expression_statement "(pWVar61->u).vtab.needFree = '\0';" (assignment_expression "(pWVar61->u).vtab.needFree = '\0'" (field_expression "(pWVar61->u).vtab.needFree" (field_expression "(pWVar61->u).vtab" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pLevel->p1 = (int)p1;" (assignment_expression "pLevel->p1 = (int)p1" (field_expression "pLevel->p1" identifier -> field_identifier) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar53 = uVar53 - 1;" (assignment_expression "uVar53 = uVar53 - 1" identifier = (binary_expression "uVar53 - 1" identifier - number_literal)) ;) (expression_statement "iVar58 = uVar53 * 4;" (assignment_expression "iVar58 = uVar53 * 4" identifier = (binary_expression "uVar53 * 4" identifier * number_literal)) ;) (expression_statement "pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;" (assignment_expression "pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad" (field_expression "pLevel->op" identifier -> field_identifier) = (binary_expression "(-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad" (parenthesized_expression "(-(pWInfo->eOnePass == '\0') & 0x90U)" ( (binary_expression "-(pWInfo->eOnePass == '\0') & 0x90U" (unary_expression "-(pWInfo->eOnePass == '\0')" - (parenthesized_expression "(pWInfo->eOnePass == '\0')" ( (binary_expression "pWInfo->eOnePass == '\0'" (field_expression "pWInfo->eOnePass" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) & number_literal) )) + number_literal)) ;) (expression_statement "local_184 = (pLevel->u).in.nIn;" (assignment_expression "local_184 = (pLevel->u).in.nIn" identifier = (field_expression "(pLevel->u).in.nIn" (field_expression "(pLevel->u).in" (parenthesized_expression "(pLevel->u)" ( (field_expression "pLevel->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pLevel->p2 = v->nOp;" (assignment_expression "pLevel->p2 = v->nOp" (field_expression "pLevel->p2" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) (for_statement "for (; uVar53 != 0xffffffff; uVar53 = uVar53 - 1) {\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }" for ( ; (binary_expression "uVar53 != 0xffffffff" identifier != number_literal) ; (assignment_expression "uVar53 = uVar53 - 1" identifier = (binary_expression "uVar53 - 1" identifier - number_literal)) ) (compound_statement "{\n        while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }\nLAB_0009b15d:\n        iVar58 = iVar58 + -4;\n      }" { (while_statement "while (pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }" while (parenthesized_expression "(pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0)" ( (comma_expression "pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58),\n              (pWVar54->eOperator & 1) != 0" (assignment_expression "pWVar54 = *(WhereTerm **)((int)pWVar61->aLTerm + iVar58)" identifier = (pointer_expression "*(WhereTerm **)((int)pWVar61->aLTerm + iVar58)" * (cast_expression "(WhereTerm **)((int)pWVar61->aLTerm + iVar58)" ( (type_descriptor "WhereTerm **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pWVar61->aLTerm + iVar58)" ( (binary_expression "(int)pWVar61->aLTerm + iVar58" (cast_expression "(int)pWVar61->aLTerm" ( (type_descriptor "int" primitive_type) ) (field_expression "pWVar61->aLTerm" identifier -> field_identifier)) + identifier) ))))) , (binary_expression "(pWVar54->eOperator & 1) != 0" (parenthesized_expression "(pWVar54->eOperator & 1)" ( (binary_expression "pWVar54->eOperator & 1" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal)) )) (compound_statement "{\n          local_184 = local_184 + -1;\n          if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;\n          pEVar42 = pWVar54->pExpr->pLeft;\n          uVar22 = pEVar42->op;\n          if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }\n          if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }\n          iVar26 = ((pEVar42->x).pList)->nExpr;\nLAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;\n          uVar53 = uVar53 - 1;\n          iVar58 = iVar58 + -4;\n          if (uVar53 == 0xffffffff) goto LAB_0009b1e0;\n        }" { (expression_statement "local_184 = local_184 + -1;" (assignment_expression "local_184 = local_184 + -1" identifier = (binary_expression "local_184 + -1" identifier + number_literal)) ;) (if_statement "if (((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)) goto LAB_0009b18a;" if (parenthesized_expression "(((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar53 < 0x10) &&\n             (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar53 < 0x10)" ( (binary_expression "(int)uVar53 < 0x10" (cast_expression "(int)uVar53" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)" ( (binary_expression "((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0" (parenthesized_expression "((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1)" ( (binary_expression "(pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1" (binary_expression "(pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f)" (field_expression "(pWVar61->u).btree.nDistinctCol" (field_expression "(pWVar61->u).btree" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) >> (parenthesized_expression "(uVar53 & 0x1f)" ( (binary_expression "uVar53 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b18a;" goto statement_identifier ;)) (expression_statement "pEVar42 = pWVar54->pExpr->pLeft;" (assignment_expression "pEVar42 = pWVar54->pExpr->pLeft" identifier = (field_expression "pWVar54->pExpr->pLeft" (field_expression "pWVar54->pExpr" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar22 = pEVar42->op;" (assignment_expression "uVar22 = pEVar42->op" identifier = (field_expression "pEVar42->op" identifier -> field_identifier)) ;) (if_statement "if (uVar22 == 0xad) {\n            uVar22 = pEVar42->op2;\n          }" if (parenthesized_expression "(uVar22 == 0xad)" ( (binary_expression "uVar22 == 0xad" identifier == number_literal) )) (compound_statement "{\n            uVar22 = pEVar42->op2;\n          }" { (expression_statement "uVar22 = pEVar42->op2;" (assignment_expression "uVar22 = pEVar42->op2" identifier = (field_expression "pEVar42->op2" identifier -> field_identifier)) ;) })) (if_statement "if (uVar22 != 0xae) {\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }" if (parenthesized_expression "(uVar22 != 0xae)" ( (binary_expression "uVar22 != 0xae" identifier != number_literal) )) (compound_statement "{\n            if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }\n            pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);\n            if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }\n            goto LAB_0009b15d;\n          }" { (if_statement "if (uVar22 == 0x88) {\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }" if (parenthesized_expression "(uVar22 == 0x88)" ( (binary_expression "uVar22 == 0x88" identifier == number_literal) )) (compound_statement "{\n              iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;\n              goto LAB_0009bc51;\n            }" { (expression_statement "iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr;" (assignment_expression "iVar26 = ((pEVar42->x).pSelect)->pEList->nExpr" identifier = (field_expression "((pEVar42->x).pSelect)->pEList->nExpr" (field_expression "((pEVar42->x).pSelect)->pEList" (parenthesized_expression "((pEVar42->x).pSelect)" ( (field_expression "(pEVar42->x).pSelect" (parenthesized_expression "(pEVar42->x)" ( (field_expression "pEVar42->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0009bc51;" goto statement_identifier ;) })) (labeled_statement "LAB_0009b066:\n            if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }" statement_identifier : (if_statement "if (db->mallocFailed == '\0') {\n              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\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              iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;\n              if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }\n              pOVar33 = (Op *)&dummy_22674;\n              if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }\n              in_stack_fffffe58 = (Expr *)pOVar33->p3;\n              sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);\n            }" { (expression_statement "iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop;" (assignment_expression "iVar26 = (pLevel->u).in.aInLoop[local_184].addrInTop" identifier = (field_expression "(pLevel->u).in.aInLoop[local_184].addrInTop" (subscript_expression "(pLevel->u).in.aInLoop[local_184]" (field_expression "(pLevel->u).in.aInLoop" (field_expression "(pLevel->u).in" (parenthesized_expression "(pLevel->u)" ( (field_expression "pLevel->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (iVar26 < 0) {\n                iVar26 = v->nOp + -1;\n              }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar26 = v->nOp + -1;\n              }" { (expression_statement "iVar26 = v->nOp + -1;" (assignment_expression "iVar26 = v->nOp + -1" identifier = (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n                pOVar33 = v->aOp + iVar26;\n              }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pOVar33 = v->aOp + iVar26;\n              }" { (expression_statement "pOVar33 = v->aOp + iVar26;" (assignment_expression "pOVar33 = v->aOp + iVar26" identifier = (binary_expression "v->aOp + iVar26" (field_expression "v->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "in_stack_fffffe58 = (Expr *)pOVar33->p3;" (assignment_expression "in_stack_fffffe58 = (Expr *)pOVar33->p3" identifier = (cast_expression "(Expr *)pOVar33->p3" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar33->p3" identifier -> field_identifier))) ;) (expression_statement "sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58)" identifier (argument_list "(v,(uint)pOVar33->opcode,pOVar33->p1,pOVar33->p2,\n                                (int)in_stack_fffffe58)" ( identifier , (cast_expression "(uint)pOVar33->opcode" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar33->opcode" identifier -> field_identifier)) , (field_expression "pOVar33->p1" identifier -> field_identifier) , (field_expression "pOVar33->p2" identifier -> field_identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) (expression_statement "pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64);" (assignment_expression "pEVar42 = sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64)" identifier = (call_expression "sqlite3PExpr(pParse,0x35,(Expr *)0x0,in_stack_fffffe64)" identifier (argument_list "(pParse,0x35,(Expr *)0x0,in_stack_fffffe64)" ( identifier , number_literal , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (if_statement "if (pEVar42 != (Expr *)0x0) {\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }" if (parenthesized_expression "(pEVar42 != (Expr *)0x0)" ( (binary_expression "pEVar42 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pEVar42->pLeft = pWVar54->pExpr->pLeft;\n              rTemp = 0;\n              local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;\n              pEVar38 = pEVar42;\n              pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);\n              pEVar42->pRight = pEVar35;\n              if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }\n              pEVar38->pLeft = (Expr *)0x0;\n              sqlite3ExprDeleteNN(db,pEVar38);\n            }" { (expression_statement "pEVar42->pLeft = pWVar54->pExpr->pLeft;" (assignment_expression "pEVar42->pLeft = pWVar54->pExpr->pLeft" (field_expression "pEVar42->pLeft" identifier -> field_identifier) = (field_expression "pWVar54->pExpr->pLeft" (field_expression "pWVar54->pExpr" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "rTemp = 0;" (assignment_expression "rTemp = 0" identifier = number_literal) ;) (expression_statement "local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0;" (assignment_expression "local_b4 = (_func_int_Walker_ptr_Expr_ptr *)0x0" identifier = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar38 = pEVar42;" (assignment_expression "pEVar38 = pEVar42" identifier = identifier) ;) (expression_statement "pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64);" (assignment_expression "pEVar35 = sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64)" identifier = (call_expression "sqlite3ExprAlloc(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64)" identifier (argument_list "(db,0xad,(Token *)&rTemp,(int)in_stack_fffffe64)" ( identifier , number_literal , (cast_expression "(Token *)&rTemp" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rTemp" & identifier)) , (cast_expression "(int)in_stack_fffffe64" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pEVar42->pRight = pEVar35;" (assignment_expression "pEVar42->pRight = pEVar35" (field_expression "pEVar42->pRight" identifier -> field_identifier) = identifier) ;) (if_statement "if (pEVar35 != (Expr *)0x0) {\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }" if (parenthesized_expression "(pEVar35 != (Expr *)0x0)" ( (binary_expression "pEVar35 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);\n                sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);\n                in_stack_fffffe58 = pEVar42;\n              }" { (expression_statement "pEVar35->iTable = (int)(&pEVar31->op2 + uVar53);" (assignment_expression "pEVar35->iTable = (int)(&pEVar31->op2 + uVar53)" (field_expression "pEVar35->iTable" identifier -> field_identifier) = (cast_expression "(int)(&pEVar31->op2 + uVar53)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&pEVar31->op2 + uVar53)" ( (binary_expression "&pEVar31->op2 + uVar53" (pointer_expression "&pEVar31->op2" & (field_expression "pEVar31->op2" identifier -> field_identifier)) + identifier) )))) ;) (expression_statement "sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,pEVar42,pLevel->addrCont,0x10)" identifier (argument_list "(pParse,pEVar42,pLevel->addrCont,0x10)" ( identifier , identifier , (field_expression "pLevel->addrCont" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) })) (expression_statement "pEVar38->pLeft = (Expr *)0x0;" (assignment_expression "pEVar38->pLeft = (Expr *)0x0" (field_expression "pEVar38->pLeft" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ExprDeleteNN(db,pEVar38);" (call_expression "sqlite3ExprDeleteNN(db,pEVar38)" identifier (argument_list "(db,pEVar38)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_0009b15d;" goto statement_identifier ;) })) (expression_statement "iVar26 = ((pEVar42->x).pList)->nExpr;" (assignment_expression "iVar26 = ((pEVar42->x).pList)->nExpr" identifier = (field_expression "((pEVar42->x).pList)->nExpr" (parenthesized_expression "((pEVar42->x).pList)" ( (field_expression "(pEVar42->x).pList" (parenthesized_expression "(pEVar42->x)" ( (field_expression "pEVar42->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (labeled_statement "LAB_0009bc51:\n          if (iVar26 == 1) goto LAB_0009b066;" statement_identifier : (if_statement "if (iVar26 == 1) goto LAB_0009b066;" if (parenthesized_expression "(iVar26 == 1)" ( (binary_expression "iVar26 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0009b066;" goto statement_identifier ;))) (expression_statement "uVar53 = uVar53 - 1;" (assignment_expression "uVar53 = uVar53 - 1" identifier = (binary_expression "uVar53 - 1" identifier - number_literal)) ;) (expression_statement "iVar58 = iVar58 + -4;" (assignment_expression "iVar58 = iVar58 + -4" identifier = (binary_expression "iVar58 + -4" identifier + number_literal)) ;) (if_statement "if (uVar53 == 0xffffffff) goto LAB_0009b1e0;" if (parenthesized_expression "(uVar53 == 0xffffffff)" ( (binary_expression "uVar53 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;)) })) (if_statement "if (((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))\n        {\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }" if (parenthesized_expression "(((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar53 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar53 < 0x10)" ( (binary_expression "(int)uVar53 < 0x10" (cast_expression "(int)uVar53" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0)" ( (binary_expression "((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1) != 0" (parenthesized_expression "((pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1)" ( (binary_expression "(pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f) & 1" (binary_expression "(pWVar61->u).btree.nDistinctCol >> (uVar53 & 0x1f)" (field_expression "(pWVar61->u).btree.nDistinctCol" (field_expression "(pWVar61->u).btree" (parenthesized_expression "(pWVar61->u)" ( (field_expression "pWVar61->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) >> (parenthesized_expression "(uVar53 & 0x1f)" ( (binary_expression "uVar53 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0009b18a:\n          disableTerm(pLevel,pWVar54);\n        }" { (labeled_statement "LAB_0009b18a:\n          disableTerm(pLevel,pWVar54);" statement_identifier : (expression_statement "disableTerm(pLevel,pWVar54);" (call_expression "disableTerm(pLevel,pWVar54)" identifier (argument_list "(pLevel,pWVar54)" ( identifier , identifier ))) ;)) })) (labeled_statement "LAB_0009b15d:\n        iVar58 = iVar58 + -4;" statement_identifier : (expression_statement "iVar58 = iVar58 + -4;" (assignment_expression "iVar58 = iVar58 + -4" identifier = (binary_expression "iVar58 + -4" identifier + number_literal)) ;)) })) }))) (labeled_statement "LAB_0009b1e0:\n    local_158 = (Index *)0x0;" statement_identifier : (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) }) (else_clause "else {\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }" else (compound_statement "{\n    iVar26 = pSVar7->a[uVar25].regReturn;\n    in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;\n    sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);\n    iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);\n    pLevel->p2 = iVar58;\n    pLevel->op = '\v';\n    local_158 = (Index *)0x0;\n    uVar53 = 2;\n  }" { (expression_statement "iVar26 = pSVar7->a[uVar25].regReturn;" (assignment_expression "iVar26 = pSVar7->a[uVar25].regReturn" identifier = (field_expression "pSVar7->a[uVar25].regReturn" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub;" (assignment_expression "in_stack_fffffe58 = (Expr *)pSVar7->a[uVar25].addrFillSub" identifier = (cast_expression "(Expr *)pSVar7->a[uVar25].addrFillSub" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar7->a[uVar25].addrFillSub" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0xd,iVar26,0,(int)in_stack_fffffe58)" identifier (argument_list "(v,0xd,iVar26,0,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58);" (assignment_expression "iVar58 = sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58)" identifier (argument_list "(v,0xe,iVar26,iVar58,(int)in_stack_fffffe58)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pLevel->p2 = iVar58;" (assignment_expression "pLevel->p2 = iVar58" (field_expression "pLevel->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "pLevel->op = '\v';" (assignment_expression "pLevel->op = '\v'" (field_expression "pLevel->op" identifier -> field_identifier) = (char_literal "'\v'" ' escape_sequence ')) ;) (expression_statement "local_158 = (Index *)0x0;" (assignment_expression "local_158 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar53 = 2;" (assignment_expression "uVar53 = 2" identifier = number_literal) ;) }))) (labeled_statement "LAB_0009b200:\n  do {\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  } while (local_17c != 0);" statement_identifier : (do_statement "do {\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  } while (local_17c != 0);" do (compound_statement "{\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    if (iVar58 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\nLAB_0009b30a:\n    uVar53 = local_17c;\n  }" { (expression_statement "iVar58 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar58 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pWVar54 = (pWInfo->sWC).a;" (assignment_expression "pWVar54 = (pWInfo->sWC).a" identifier = (field_expression "(pWInfo->sWC).a" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (iVar58 < 1) goto LAB_0009b538;" if (parenthesized_expression "(iVar58 < 1)" ( (binary_expression "iVar58 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0009b538;" goto statement_identifier ;)) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);" do (compound_statement "{\n      while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }\n      if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }\n      pWVar54 = pWVar54 + 1;\n      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;\n      iVar58 = iVar58 + -1;\n    }" { (while_statement "while (uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }" while (parenthesized_expression "(uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0)" ( (comma_expression "uVar40 = pWVar54->wtFlags, uVar50 = local_17c, (uVar40 & 6) != 0" (assignment_expression "uVar40 = pWVar54->wtFlags" identifier = (field_expression "pWVar54->wtFlags" identifier -> field_identifier)) , (comma_expression "uVar50 = local_17c, (uVar40 & 6) != 0" (assignment_expression "uVar50 = local_17c" identifier = identifier) , (binary_expression "(uVar40 & 6) != 0" (parenthesized_expression "(uVar40 & 6)" ( (binary_expression "uVar40 & 6" identifier & number_literal) )) != number_literal))) )) (compound_statement "{\nLAB_0009b2d5:\n        local_17c = uVar50;\n        pWVar54 = pWVar54 + 1;\n        iVar58 = iVar58 + -1;\n        if (iVar58 == 0) goto LAB_0009b30a;\n      }" { (labeled_statement "LAB_0009b2d5:\n        local_17c = uVar50;" statement_identifier : (expression_statement "local_17c = uVar50;" (assignment_expression "local_17c = uVar50" identifier = identifier) ;)) (expression_statement "pWVar54 = pWVar54 + 1;" (assignment_expression "pWVar54 = pWVar54 + 1" identifier = (binary_expression "pWVar54 + 1" identifier + number_literal)) ;) (expression_statement "iVar58 = iVar58 + -1;" (assignment_expression "iVar58 = iVar58 + -1" identifier = (binary_expression "iVar58 + -1" identifier + number_literal)) ;) (if_statement "if (iVar58 == 0) goto LAB_0009b30a;" if (parenthesized_expression "(iVar58 == 0)" ( (binary_expression "iVar58 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009b30a;" goto statement_identifier ;)) })) (if_statement "if ((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0) {\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }" if (parenthesized_expression "((*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0)" ( (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0 &&\n          ((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0" (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)) == 0" (parenthesized_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4))" ( (binary_expression "*(uint *)((int)&pWVar54->prereqAll + 4) & *(uint *)((int)&pLevel->notReady + 4)" (pointer_expression "*(uint *)((int)&pWVar54->prereqAll + 4)" * (cast_expression "(uint *)((int)&pWVar54->prereqAll + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar54->prereqAll + 4)" ( (binary_expression "(int)&pWVar54->prereqAll + 4" (cast_expression "(int)&pWVar54->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar54->prereqAll" & (field_expression "pWVar54->prereqAll" identifier -> field_identifier))) + number_literal) )))) & (pointer_expression "*(uint *)((int)&pLevel->notReady + 4)" * (cast_expression "(uint *)((int)&pLevel->notReady + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pLevel->notReady + 4)" ( (binary_expression "(int)&pLevel->notReady + 4" (cast_expression "(int)&pLevel->notReady" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLevel->notReady" & (field_expression "pLevel->notReady" identifier -> field_identifier))) + number_literal) ))))) )) == number_literal) && (binary_expression "((uint)pWVar54->prereqAll & (uint)pLevel->notReady) == 0" (parenthesized_expression "((uint)pWVar54->prereqAll & (uint)pLevel->notReady)" ( (binary_expression "(uint)pWVar54->prereqAll & (uint)pLevel->notReady" (cast_expression "(uint)pWVar54->prereqAll" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar54->prereqAll" identifier -> field_identifier)) & (cast_expression "(uint)pLevel->notReady" ( (type_descriptor "uint" type_identifier) ) (field_expression "pLevel->notReady" identifier -> field_identifier))) )) == number_literal)) )) (compound_statement "{\n        pEVar42 = pWVar54->pExpr;\n        if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;\n        if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;\n        if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }\n        pWVar54->wtFlags = pWVar54->wtFlags | 4;\n        goto LAB_0009b2d5;\n      }" { (expression_statement "pEVar42 = pWVar54->pExpr;" (assignment_expression "pEVar42 = pWVar54->pExpr" identifier = (field_expression "pWVar54->pExpr" identifier -> field_identifier)) ;) (if_statement "if (((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))\n        goto LAB_0009b2d5;" if (parenthesized_expression "(((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0))" ( (binary_expression "((pSVar7->a[uVar25].fg.jointype & 8) != 0) && ((pEVar42->flags & 1) == 0)" (parenthesized_expression "((pSVar7->a[uVar25].fg.jointype & 8) != 0)" ( (binary_expression "(pSVar7->a[uVar25].fg.jointype & 8) != 0" (parenthesized_expression "(pSVar7->a[uVar25].fg.jointype & 8)" ( (binary_expression "pSVar7->a[uVar25].fg.jointype & 8" (field_expression "pSVar7->a[uVar25].fg.jointype" (field_expression "pSVar7->a[uVar25].fg" (subscript_expression "pSVar7->a[uVar25]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((pEVar42->flags & 1) == 0)" ( (binary_expression "(pEVar42->flags & 1) == 0" (parenthesized_expression "(pEVar42->flags & 1)" ( (binary_expression "pEVar42->flags & 1" (field_expression "pEVar42->flags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;)) (if_statement "if (uVar53 == 1) {\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (uVar53 != 3) goto LAB_0009b594;" if (parenthesized_expression "(uVar53 == 1)" ( (binary_expression "uVar53 == 1" identifier == number_literal) )) (compound_statement "{\n          x_1.iTabCur = pLevel->iTabCur;\n          uVar41 = 0;\n          do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);\n          x_1.pIdxExpr = (Expr *)local_158;\n          local_b4 = exprIdxCover;\n          local_a0.pNC = (NameContext *)&x_1;\n          if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar40 = pWVar54->wtFlags;\nLAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }" { (expression_statement "x_1.iTabCur = pLevel->iTabCur;" (assignment_expression "x_1.iTabCur = pLevel->iTabCur" (field_expression "x_1.iTabCur" identifier . field_identifier) = (field_expression "pLevel->iTabCur" identifier -> field_identifier)) ;) (expression_statement "uVar41 = 0;" (assignment_expression "uVar41 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          } while (uVar41 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;\n            uVar41 = uVar41 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0;" (assignment_expression "*(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41) = 0" (pointer_expression "*(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41)" * (cast_expression "(undefined4 *)((int)&((Walker *)&rTemp)->pParse + uVar41)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((Walker *)&rTemp)->pParse + uVar41)" ( (binary_expression "(int)&((Walker *)&rTemp)->pParse + uVar41" (cast_expression "(int)&((Walker *)&rTemp)->pParse" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((Walker *)&rTemp)->pParse" & (field_expression "((Walker *)&rTemp)->pParse" (parenthesized_expression "((Walker *)&rTemp)" ( (cast_expression "(Walker *)&rTemp" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rTemp" & identifier)) )) -> field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar41 = uVar41 + 4;" (assignment_expression "uVar41 = uVar41 + 4" identifier = (binary_expression "uVar41 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar41 < 0x18)" ( (binary_expression "uVar41 < 0x18" identifier < number_literal) )) ;) (expression_statement "x_1.pIdxExpr = (Expr *)local_158;" (assignment_expression "x_1.pIdxExpr = (Expr *)local_158" (field_expression "x_1.pIdxExpr" identifier . field_identifier) = (cast_expression "(Expr *)local_158" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_b4 = exprIdxCover;" (assignment_expression "local_b4 = exprIdxCover" identifier = identifier) ;) (expression_statement "local_a0.pNC = (NameContext *)&x_1;" (assignment_expression "local_a0.pNC = (NameContext *)&x_1" (field_expression "local_a0.pNC" identifier . field_identifier) = (cast_expression "(NameContext *)&x_1" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&x_1" & identifier))) ;) (if_statement "if (pEVar42 != (Expr *)0x0) {\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" if (parenthesized_expression "(pEVar42 != (Expr *)0x0)" ( (binary_expression "pEVar42 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            walkExpr((Walker *)&rTemp,pEVar42);\n            if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" { (expression_statement "walkExpr((Walker *)&rTemp,pEVar42);" (call_expression "walkExpr((Walker *)&rTemp,pEVar42)" identifier (argument_list "((Walker *)&rTemp,pEVar42)" ( (cast_expression "(Walker *)&rTemp" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rTemp" & identifier)) , identifier ))) ;) (if_statement "if (local_a4._0_2_ != 0) {\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }" if (parenthesized_expression "(local_a4._0_2_ != 0)" ( (binary_expression "local_a4._0_2_ != 0" (field_expression "local_a4._0_2_" identifier . field_identifier) != number_literal) )) (compound_statement "{\n              local_17c = 2;\n              uVar50 = local_17c;\n              goto LAB_0009b2d5;\n            }" { (expression_statement "local_17c = 2;" (assignment_expression "local_17c = 2" identifier = number_literal) ;) (expression_statement "uVar50 = local_17c;" (assignment_expression "uVar50 = local_17c" identifier = identifier) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) })) (expression_statement "uVar40 = pWVar54->wtFlags;" (assignment_expression "uVar40 = pWVar54->wtFlags" identifier = (field_expression "pWVar54->wtFlags" identifier -> field_identifier)) ;) (labeled_statement "LAB_0009b594:\n          if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" statement_identifier : (if_statement "if ((uVar40 & 0x1000) != 0) {\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" if (parenthesized_expression "((uVar40 & 0x1000) != 0)" ( (binary_expression "(uVar40 & 0x1000) != 0" (parenthesized_expression "(uVar40 & 0x1000)" ( (binary_expression "uVar40 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar50 = 3;\n            if (local_17c != 0) {\n              uVar50 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" { (expression_statement "uVar50 = 3;" (assignment_expression "uVar50 = 3" identifier = number_literal) ;) (if_statement "if (local_17c != 0) {\n              uVar50 = local_17c;\n            }" if (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) (compound_statement "{\n              uVar50 = local_17c;\n            }" { (expression_statement "uVar50 = local_17c;" (assignment_expression "uVar50 = local_17c" identifier = identifier) ;) })) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar53 != 3) goto LAB_0009b594;" else (if_statement "if (uVar53 != 3) goto LAB_0009b594;" if (parenthesized_expression "(uVar53 != 3)" ( (binary_expression "uVar53 != 3" identifier != number_literal) )) (goto_statement "goto LAB_0009b594;" goto statement_identifier ;)))) (if_statement "if (((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)) {\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }\n        else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }" if (parenthesized_expression "(((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0))" ( (binary_expression "((uVar40 & 0x200) == 0) || (uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)" (parenthesized_expression "((uVar40 & 0x200) == 0)" ( (binary_expression "(uVar40 & 0x200) == 0" (parenthesized_expression "(uVar40 & 0x200)" ( (binary_expression "uVar40 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar41 = pLevel->iLikeRepCntr, uVar41 == 0)" ( (comma_expression "uVar41 = pLevel->iLikeRepCntr, uVar41 == 0" (assignment_expression "uVar41 = pLevel->iLikeRepCntr" identifier = (field_expression "pLevel->iLikeRepCntr" identifier -> field_identifier)) , (binary_expression "uVar41 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          in_stack_fffffe58 = pEVar42;\n        }" { (expression_statement "sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10)" identifier (argument_list "(pParse,pEVar42,p2_00,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "in_stack_fffffe58 = pEVar42;" (assignment_expression "in_stack_fffffe58 = pEVar42" identifier = identifier) ;) }) (else_clause "else {\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }" else (compound_statement "{\n          iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);\n          sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);\n          if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }\n        }" { (expression_statement "iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58)" identifier = (call_expression "sqlite3VdbeAddOp3(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58)" identifier (argument_list "(v,(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14,uVar41 >> 1,\n                                     0,(int)in_stack_fffffe58)" ( identifier , (binary_expression "(-(uint)((uVar41 & 1) == 0) & 0xfffffffe) + 0x14" (parenthesized_expression "(-(uint)((uVar41 & 1) == 0) & 0xfffffffe)" ( (binary_expression "-(uint)((uVar41 & 1) == 0) & 0xfffffffe" (unary_expression "-(uint)((uVar41 & 1) == 0)" - (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) )))) & number_literal) )) + number_literal) , (binary_expression "uVar41 >> 1" identifier >> number_literal) , number_literal , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,pEVar42,p2_00,0x10)" identifier (argument_list "(pParse,pEVar42,p2_00,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) (if_statement "if (iVar26 != 0) {\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n            if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }\n            pOVar33 = (Op *)&dummy_22674;\n            if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }\n            pOVar33->p2 = v->nOp;\n          }" { (if_statement "if (iVar26 < 0) {\n              iVar26 = v->nOp + -1;\n            }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar26 = v->nOp + -1;\n            }" { (expression_statement "iVar26 = v->nOp + -1;" (assignment_expression "iVar26 = v->nOp + -1" identifier = (binary_expression "v->nOp + -1" (field_expression "v->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar33 = (Op *)&dummy_22674;" (assignment_expression "pOVar33 = (Op *)&dummy_22674" identifier = (cast_expression "(Op *)&dummy_22674" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy_22674" & identifier))) ;) (if_statement "if (v->db->mallocFailed == '\0') {\n              pOVar33 = v->aOp + iVar26;\n            }" if (parenthesized_expression "(v->db->mallocFailed == '\0')" ( (binary_expression "v->db->mallocFailed == '\0'" (field_expression "v->db->mallocFailed" (field_expression "v->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar33 = v->aOp + iVar26;\n            }" { (expression_statement "pOVar33 = v->aOp + iVar26;" (assignment_expression "pOVar33 = v->aOp + iVar26" identifier = (binary_expression "v->aOp + iVar26" (field_expression "v->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar33->p2 = v->nOp;" (assignment_expression "pOVar33->p2 = v->nOp" (field_expression "pOVar33->p2" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) })) }))) (expression_statement "pWVar54->wtFlags = pWVar54->wtFlags | 4;" (assignment_expression "pWVar54->wtFlags = pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) = (binary_expression "pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) | number_literal)) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) (expression_statement "pWVar54 = pWVar54 + 1;" (assignment_expression "pWVar54 = pWVar54 + 1" identifier = (binary_expression "pWVar54 + 1" identifier + number_literal)) ;) (expression_statement "pWInfo->field_0x30 = pWInfo->field_0x30 | 2;" (assignment_expression "pWInfo->field_0x30 = pWInfo->field_0x30 | 2" (field_expression "pWInfo->field_0x30" identifier -> field_identifier) = (binary_expression "pWInfo->field_0x30 | 2" (field_expression "pWInfo->field_0x30" identifier -> field_identifier) | number_literal)) ;) (expression_statement "iVar58 = iVar58 + -1;" (assignment_expression "iVar58 = iVar58 + -1" identifier = (binary_expression "iVar58 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar58 != 0)" ( (binary_expression "iVar58 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_0009b30a:\n    uVar53 = local_17c;" statement_identifier : (expression_statement "uVar53 = local_17c;" (assignment_expression "uVar53 = local_17c" identifier = identifier) ;)) }) while (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) ;)) (expression_statement "iVar58 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar58 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pWVar54 = (pWInfo->sWC).a;" (assignment_expression "pWVar54 = (pWInfo->sWC).a" identifier = (field_expression "(pWInfo->sWC).a" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (0 < iVar58) {\n    paVar62 = &pSVar7->a[uVar25 - 1].u1;\n    do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\n  }" if (parenthesized_expression "(0 < iVar58)" ( (binary_expression "0 < iVar58" number_literal < identifier) )) (compound_statement "{\n    paVar62 = &pSVar7->a[uVar25 - 1].u1;\n    do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);\n  }" { (expression_statement "paVar62 = &pSVar7->a[uVar25 - 1].u1;" (assignment_expression "paVar62 = &pSVar7->a[uVar25 - 1].u1" identifier = (pointer_expression "&pSVar7->a[uVar25 - 1].u1" & (field_expression "pSVar7->a[uVar25 - 1].u1" (subscript_expression "pSVar7->a[uVar25 - 1]" (field_expression "pSVar7->a" identifier -> field_identifier) [ (binary_expression "uVar25 - 1" identifier - number_literal) ]) . field_identifier))) ;) (do_statement "do {\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    } while (iVar58 != 0);" do (compound_statement "{\n      if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }\n      pWVar54 = pWVar54 + 1;\n      iVar58 = iVar58 + -1;\n    }" { (if_statement "if (((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))) {\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0))))" ( (binary_expression "((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)) &&\n         (((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))" (parenthesized_expression "((((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0))" ( (binary_expression "(((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)) &&\n          ((pWVar54->eOperator & 0x800) != 0)" (parenthesized_expression "(((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0))" ( (binary_expression "((pWVar54->wtFlags & 6) == 0) && ((pWVar54->eOperator & 0x82) != 0)" (parenthesized_expression "((pWVar54->wtFlags & 6) == 0)" ( (binary_expression "(pWVar54->wtFlags & 6) == 0" (parenthesized_expression "(pWVar54->wtFlags & 6)" ( (binary_expression "pWVar54->wtFlags & 6" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pWVar54->eOperator & 0x82) != 0)" ( (binary_expression "(pWVar54->eOperator & 0x82) != 0" (parenthesized_expression "(pWVar54->eOperator & 0x82)" ( (binary_expression "pWVar54->eOperator & 0x82" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((pWVar54->eOperator & 0x800) != 0)" ( (binary_expression "(pWVar54->eOperator & 0x800) != 0" (parenthesized_expression "(pWVar54->eOperator & 0x800)" ( (binary_expression "pWVar54->eOperator & 0x800" (field_expression "pWVar54->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)))" ( (parenthesized_expression "((Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0))" ( (binary_expression "(Expr *)pWVar54->leftCursor == p1 && ((*(byte *)(paVar62 + 0xb) & 8) == 0)" (binary_expression "(Expr *)pWVar54->leftCursor == p1" (cast_expression "(Expr *)pWVar54->leftCursor" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar54->leftCursor" identifier -> field_identifier)) == identifier) && (parenthesized_expression "((*(byte *)(paVar62 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(paVar62 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(paVar62 + 0xb) & 8)" ( (binary_expression "*(byte *)(paVar62 + 0xb) & 8" (pointer_expression "*(byte *)(paVar62 + 0xb)" * (cast_expression "(byte *)(paVar62 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar62 + 0xb)" ( (binary_expression "paVar62 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        pEVar42 = pWVar54->pExpr;\n        scan.opMask = 0x83;\n        scan.k = 0;\n        scan.zCollName = (char *)0x0;\n        scan.pIdxExpr = (Expr *)0x0;\n        scan.idxaff = '\0';\n        scan.nEquiv = '\x01';\n        scan.iEquiv = '\x01';\n        scan.pOrigWC = pWC;\n        scan.pWC = pWC;\n        scan.aiCur[0] = (int)p1;\n        if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }\n      }" { (expression_statement "pEVar42 = pWVar54->pExpr;" (assignment_expression "pEVar42 = pWVar54->pExpr" identifier = (field_expression "pWVar54->pExpr" identifier -> field_identifier)) ;) (expression_statement "scan.opMask = 0x83;" (assignment_expression "scan.opMask = 0x83" (field_expression "scan.opMask" identifier . field_identifier) = number_literal) ;) (expression_statement "scan.k = 0;" (assignment_expression "scan.k = 0" (field_expression "scan.k" identifier . field_identifier) = number_literal) ;) (expression_statement "scan.zCollName = (char *)0x0;" (assignment_expression "scan.zCollName = (char *)0x0" (field_expression "scan.zCollName" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "scan.pIdxExpr = (Expr *)0x0;" (assignment_expression "scan.pIdxExpr = (Expr *)0x0" (field_expression "scan.pIdxExpr" identifier . field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "scan.idxaff = '\0';" (assignment_expression "scan.idxaff = '\0'" (field_expression "scan.idxaff" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "scan.nEquiv = '\x01';" (assignment_expression "scan.nEquiv = '\x01'" (field_expression "scan.nEquiv" identifier . field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "scan.iEquiv = '\x01';" (assignment_expression "scan.iEquiv = '\x01'" (field_expression "scan.iEquiv" identifier . field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "scan.pOrigWC = pWC;" (assignment_expression "scan.pOrigWC = pWC" (field_expression "scan.pOrigWC" identifier . field_identifier) = identifier) ;) (expression_statement "scan.pWC = pWC;" (assignment_expression "scan.pWC = pWC" (field_expression "scan.pWC" identifier . field_identifier) = identifier) ;) (expression_statement "scan.aiCur[0] = (int)p1;" (assignment_expression "scan.aiCur[0] = (int)p1" (subscript_expression "scan.aiCur[0]" (field_expression "scan.aiCur" identifier . field_identifier) [ number_literal ]) = (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((pWVar54->u).leftColumn != -2) {\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }" if (parenthesized_expression "((pWVar54->u).leftColumn != -2)" ( (binary_expression "(pWVar54->u).leftColumn != -2" (field_expression "(pWVar54->u).leftColumn" (parenthesized_expression "(pWVar54->u)" ( (field_expression "pWVar54->u" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n          scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;\n          pWVar29 = whereScanNext(&scan);\n          if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }\n        }" { (expression_statement "scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn;" (assignment_expression "scan.aiColumn[0] = (i16)(pWVar54->u).leftColumn" (subscript_expression "scan.aiColumn[0]" (field_expression "scan.aiColumn" identifier . field_identifier) [ number_literal ]) = (field_expression "(i16)(pWVar54->u).leftColumn" (call_expression "(i16)(pWVar54->u)" (parenthesized_expression "(i16)" ( identifier )) (argument_list "(pWVar54->u)" ( (field_expression "pWVar54->u" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "pWVar29 = whereScanNext(&scan);" (assignment_expression "pWVar29 = whereScanNext(&scan)" identifier = (call_expression "whereScanNext(&scan)" identifier (argument_list "(&scan)" ( (pointer_expression "&scan" & identifier) )))) ;) (if_statement "if (pWVar29 != (WhereTerm *)0x0) {\n            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\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            pWVar48 = (WhereTerm *)0x0;\n            do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);\n            pWVar29 = pWVar48;\n            if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }\n          }" { (expression_statement "pWVar48 = (WhereTerm *)0x0;" (assignment_expression "pWVar48 = (WhereTerm *)0x0" identifier = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            } while (pWVar29 != (WhereTerm *)0x0);" do (compound_statement "{\n              uVar53 = (uint)pWVar29->prereqRight;\n              uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);\n              if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }\n              pWVar29 = whereScanNext(&scan);\n            }" { (expression_statement "uVar53 = (uint)pWVar29->prereqRight;" (assignment_expression "uVar53 = (uint)pWVar29->prereqRight" identifier = (cast_expression "(uint)pWVar29->prereqRight" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar29->prereqRight" identifier -> field_identifier))) ;) (expression_statement "uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4);" (assignment_expression "uVar25 = *(uint *)((int)&pWVar29->prereqRight + 4)" identifier = (pointer_expression "*(uint *)((int)&pWVar29->prereqRight + 4)" * (cast_expression "(uint *)((int)&pWVar29->prereqRight + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar29->prereqRight + 4)" ( (binary_expression "(int)&pWVar29->prereqRight + 4" (cast_expression "(int)&pWVar29->prereqRight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar29->prereqRight" & (field_expression "pWVar29->prereqRight" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if ((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0) {\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }" if (parenthesized_expression "((notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0)" ( (binary_expression "(notReady._4_4_ & uVar25) == 0 && ((uint)notReady & uVar53) == 0" (binary_expression "(notReady._4_4_ & uVar25) == 0" (parenthesized_expression "(notReady._4_4_ & uVar25)" ( (binary_expression "notReady._4_4_ & uVar25" (field_expression "notReady._4_4_" identifier . field_identifier) & identifier) )) == number_literal) && (binary_expression "((uint)notReady & uVar53) == 0" (parenthesized_expression "((uint)notReady & uVar53)" ( (binary_expression "(uint)notReady & uVar53" (cast_expression "(uint)notReady" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) == number_literal)) )) (compound_statement "{\n                if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;\n                if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }\n              }" { (if_statement "if ((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))\n                goto LAB_0009b454;" if (parenthesized_expression "((uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0))" ( (binary_expression "(uVar25 == 0 && uVar53 == 0) && ((pWVar29->eOperator & 0x82) != 0)" (parenthesized_expression "(uVar25 == 0 && uVar53 == 0)" ( (binary_expression "uVar25 == 0 && uVar53 == 0" (binary_expression "uVar25 == 0" identifier == number_literal) && (binary_expression "uVar53 == 0" identifier == number_literal)) )) && (parenthesized_expression "((pWVar29->eOperator & 0x82) != 0)" ( (binary_expression "(pWVar29->eOperator & 0x82) != 0" (parenthesized_expression "(pWVar29->eOperator & 0x82)" ( (binary_expression "pWVar29->eOperator & 0x82" (field_expression "pWVar29->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b454;" goto statement_identifier ;)) (if_statement "if (pWVar48 == (WhereTerm *)0x0) {\n                  pWVar48 = pWVar29;\n                }" if (parenthesized_expression "(pWVar48 == (WhereTerm *)0x0)" ( (binary_expression "pWVar48 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pWVar48 = pWVar29;\n                }" { (expression_statement "pWVar48 = pWVar29;" (assignment_expression "pWVar48 = pWVar29" identifier = identifier) ;) })) })) (expression_statement "pWVar29 = whereScanNext(&scan);" (assignment_expression "pWVar29 = whereScanNext(&scan)" identifier = (call_expression "whereScanNext(&scan)" identifier (argument_list "(&scan)" ( (pointer_expression "&scan" & identifier) )))) ;) }) while (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)) )) ;) (expression_statement "pWVar29 = pWVar48;" (assignment_expression "pWVar29 = pWVar48" identifier = identifier) ;) (if_statement "if (pWVar48 != (WhereTerm *)0x0) {\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }" if (parenthesized_expression "(pWVar48 != (WhereTerm *)0x0)" ( (binary_expression "pWVar48 != (WhereTerm *)0x0" identifier != (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }\n            }" { (labeled_statement "LAB_0009b454:\n              if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }" statement_identifier : (if_statement "if (((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 ) {\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }" if (parenthesized_expression "(((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))\n                 )" ( (binary_expression "((pWVar29->wtFlags & 4) == 0) &&\n                 (((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))" (parenthesized_expression "((pWVar29->wtFlags & 4) == 0)" ( (binary_expression "(pWVar29->wtFlags & 4) == 0" (parenthesized_expression "(pWVar29->wtFlags & 4)" ( (binary_expression "pWVar29->wtFlags & 4" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)))" ( (parenthesized_expression "((pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2))" ( (binary_expression "(pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)) || (((pEVar31->x).pSelect)->pEList->nExpr < 2)" (parenthesized_expression "(pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0))" ( (comma_expression "pEVar31 = pWVar29->pExpr, (pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)" (assignment_expression "pEVar31 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) , (binary_expression "(pWVar29->eOperator & 1) == 0 ||\n                   ((pEVar31->flags & 0x800) == 0)" (binary_expression "(pWVar29->eOperator & 1) == 0" (parenthesized_expression "(pWVar29->eOperator & 1)" ( (binary_expression "pWVar29->eOperator & 1" (field_expression "pWVar29->eOperator" identifier -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "((pEVar31->flags & 0x800) == 0)" ( (binary_expression "(pEVar31->flags & 0x800) == 0" (parenthesized_expression "(pEVar31->flags & 0x800)" ( (binary_expression "pEVar31->flags & 0x800" (field_expression "pEVar31->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )))) )) || (parenthesized_expression "(((pEVar31->x).pSelect)->pEList->nExpr < 2)" ( (binary_expression "((pEVar31->x).pSelect)->pEList->nExpr < 2" (field_expression "((pEVar31->x).pSelect)->pEList->nExpr" (field_expression "((pEVar31->x).pSelect)->pEList" (parenthesized_expression "((pEVar31->x).pSelect)" ( (field_expression "(pEVar31->x).pSelect" (parenthesized_expression "(pEVar31->x)" ( (field_expression "pEVar31->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier) < number_literal) ))) )) ))) )) (compound_statement "{\n                rTemp._0_1_ = pEVar31->op;\n                rTemp._1_1_ = pEVar31->affExpr;\n                rTemp._2_1_ = pEVar31->op2;\n                rTemp._3_1_ = pEVar31->field_0x3;\n                local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;\n                local_b0 = pEVar31->u;\n                local_a8 = pEVar31->pRight;\n                local_a4 = pEVar31->x;\n                local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;\n                local_9c = pEVar31->iTable;\n                local_98._0_2_ = pEVar31->iColumn;\n                local_98._2_2_ = pEVar31->iAgg;\n                local_94._0_2_ = pEVar31->iRightJoinTable;\n                local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;\n                local_90 = pEVar31->pAggInfo;\n                local_8c.pTab = (pEVar31->y).pTab;\n                local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;\n                local_ac = pEVar42->pLeft;\n                in_stack_fffffe58 = (Expr *)&rTemp;\n                sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);\n              }" { (expression_statement "rTemp._0_1_ = pEVar31->op;" (assignment_expression "rTemp._0_1_ = pEVar31->op" (field_expression "rTemp._0_1_" identifier . field_identifier) = (field_expression "pEVar31->op" identifier -> field_identifier)) ;) (expression_statement "rTemp._1_1_ = pEVar31->affExpr;" (assignment_expression "rTemp._1_1_ = pEVar31->affExpr" (field_expression "rTemp._1_1_" identifier . field_identifier) = (field_expression "pEVar31->affExpr" identifier -> field_identifier)) ;) (expression_statement "rTemp._2_1_ = pEVar31->op2;" (assignment_expression "rTemp._2_1_ = pEVar31->op2" (field_expression "rTemp._2_1_" identifier . field_identifier) = (field_expression "pEVar31->op2" identifier -> field_identifier)) ;) (expression_statement "rTemp._3_1_ = pEVar31->field_0x3;" (assignment_expression "rTemp._3_1_ = pEVar31->field_0x3" (field_expression "rTemp._3_1_" identifier . field_identifier) = (field_expression "pEVar31->field_0x3" identifier -> field_identifier)) ;) (expression_statement "local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags;" (assignment_expression "local_b4 = (_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags" identifier = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)pEVar31->flags" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pEVar31->flags" identifier -> field_identifier))) ;) (expression_statement "local_b0 = pEVar31->u;" (assignment_expression "local_b0 = pEVar31->u" identifier = (field_expression "pEVar31->u" identifier -> field_identifier)) ;) (expression_statement "local_a8 = pEVar31->pRight;" (assignment_expression "local_a8 = pEVar31->pRight" identifier = (field_expression "pEVar31->pRight" identifier -> field_identifier)) ;) (expression_statement "local_a4 = pEVar31->x;" (assignment_expression "local_a4 = pEVar31->x" identifier = (field_expression "pEVar31->x" identifier -> field_identifier)) ;) (expression_statement "local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight;" (assignment_expression "local_a0 = (anon_union_4_16_1c331a60_for_u)pEVar31->nHeight" identifier = (cast_expression "(anon_union_4_16_1c331a60_for_u)pEVar31->nHeight" ( (type_descriptor "anon_union_4_16_1c331a60_for_u" type_identifier) ) (field_expression "pEVar31->nHeight" identifier -> field_identifier))) ;) (expression_statement "local_9c = pEVar31->iTable;" (assignment_expression "local_9c = pEVar31->iTable" identifier = (field_expression "pEVar31->iTable" identifier -> field_identifier)) ;) (expression_statement "local_98._0_2_ = pEVar31->iColumn;" (assignment_expression "local_98._0_2_ = pEVar31->iColumn" (field_expression "local_98._0_2_" identifier . field_identifier) = (field_expression "pEVar31->iColumn" identifier -> field_identifier)) ;) (expression_statement "local_98._2_2_ = pEVar31->iAgg;" (assignment_expression "local_98._2_2_ = pEVar31->iAgg" (field_expression "local_98._2_2_" identifier . field_identifier) = (field_expression "pEVar31->iAgg" identifier -> field_identifier)) ;) (expression_statement "local_94._0_2_ = pEVar31->iRightJoinTable;" (assignment_expression "local_94._0_2_ = pEVar31->iRightJoinTable" (field_expression "local_94._0_2_" identifier . field_identifier) = (field_expression "pEVar31->iRightJoinTable" identifier -> field_identifier)) ;) (expression_statement "local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26;" (assignment_expression "local_94._2_2_ = *(undefined2 *)&pEVar31->field_0x26" (field_expression "local_94._2_2_" identifier . field_identifier) = (pointer_expression "*(undefined2 *)&pEVar31->field_0x26" * (cast_expression "(undefined2 *)&pEVar31->field_0x26" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar31->field_0x26" & (field_expression "pEVar31->field_0x26" identifier -> field_identifier))))) ;) (expression_statement "local_90 = pEVar31->pAggInfo;" (assignment_expression "local_90 = pEVar31->pAggInfo" identifier = (field_expression "pEVar31->pAggInfo" identifier -> field_identifier)) ;) (expression_statement "local_8c.pTab = (pEVar31->y).pTab;" (assignment_expression "local_8c.pTab = (pEVar31->y).pTab" (field_expression "local_8c.pTab" identifier . field_identifier) = (field_expression "(pEVar31->y).pTab" (parenthesized_expression "(pEVar31->y)" ( (field_expression "pEVar31->y" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_8c.sub.regReturn = (pEVar31->y).sub.regReturn;" (assignment_expression "local_8c.sub.regReturn = (pEVar31->y).sub.regReturn" (field_expression "local_8c.sub.regReturn" (field_expression "local_8c.sub" identifier . field_identifier) . field_identifier) = (field_expression "(pEVar31->y).sub.regReturn" (field_expression "(pEVar31->y).sub" (parenthesized_expression "(pEVar31->y)" ( (field_expression "pEVar31->y" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "local_ac = pEVar42->pLeft;" (assignment_expression "local_ac = pEVar42->pLeft" identifier = (field_expression "pEVar42->pLeft" identifier -> field_identifier)) ;) (expression_statement "in_stack_fffffe58 = (Expr *)&rTemp;" (assignment_expression "in_stack_fffffe58 = (Expr *)&rTemp" identifier = (cast_expression "(Expr *)&rTemp" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rTemp" & identifier))) ;) (expression_statement "sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,in_stack_fffffe58,p2_00,0x10)" identifier (argument_list "(pParse,in_stack_fffffe58,p2_00,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) }))) })) })) })) })) (expression_statement "pWVar54 = pWVar54 + 1;" (assignment_expression "pWVar54 = pWVar54 + 1" identifier = (binary_expression "pWVar54 + 1" identifier + number_literal)) ;) (expression_statement "iVar58 = iVar58 + -1;" (assignment_expression "iVar58 = iVar58 + -1" identifier = (binary_expression "iVar58 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar58 != 0)" ( (binary_expression "iVar58 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0009b538:\n  if (pLevel->iLeftJoin == 0) {\n    notReady = pLevel->notReady;\n  }\n  else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }" statement_identifier : (if_statement "if (pLevel->iLeftJoin == 0) {\n    notReady = pLevel->notReady;\n  }\n  else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }" if (parenthesized_expression "(pLevel->iLeftJoin == 0)" ( (binary_expression "pLevel->iLeftJoin == 0" (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    notReady = pLevel->notReady;\n  }" { (expression_statement "notReady = pLevel->notReady;" (assignment_expression "notReady = pLevel->notReady" identifier = (field_expression "pLevel->notReady" identifier -> field_identifier)) ;) }) (else_clause "else {\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }" else (compound_statement "{\n    pLevel->addrFirst = v->nOp;\n    sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);\n    uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n    iVar58 = (pWInfo->sWC).nTerm;\n    pWVar54 = (pWInfo->sWC).a;\n    uVar53 = (uint)pLevel->notReady;\n    notReady = pLevel->notReady;\n    if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }\n  }" { (expression_statement "pLevel->addrFirst = v->nOp;" (assignment_expression "pLevel->addrFirst = v->nOp" (field_expression "pLevel->addrFirst" identifier -> field_identifier) = (field_expression "v->nOp" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58);" (call_expression "sqlite3VdbeAddOp3(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58)" identifier (argument_list "(v,0x45,1,pLevel->iLeftJoin,(int)in_stack_fffffe58)" ( identifier , number_literal , number_literal , (field_expression "pLevel->iLeftJoin" identifier -> field_identifier) , (cast_expression "(int)in_stack_fffffe58" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uVar25 = *(uint *)((int)&pLevel->notReady + 4);" (assignment_expression "uVar25 = *(uint *)((int)&pLevel->notReady + 4)" identifier = (pointer_expression "*(uint *)((int)&pLevel->notReady + 4)" * (cast_expression "(uint *)((int)&pLevel->notReady + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pLevel->notReady + 4)" ( (binary_expression "(int)&pLevel->notReady + 4" (cast_expression "(int)&pLevel->notReady" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLevel->notReady" & (field_expression "pLevel->notReady" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar58 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar58 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pWVar54 = (pWInfo->sWC).a;" (assignment_expression "pWVar54 = (pWInfo->sWC).a" identifier = (field_expression "(pWInfo->sWC).a" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar53 = (uint)pLevel->notReady;" (assignment_expression "uVar53 = (uint)pLevel->notReady" identifier = (cast_expression "(uint)pLevel->notReady" ( (type_descriptor "uint" type_identifier) ) (field_expression "pLevel->notReady" identifier -> field_identifier))) ;) (expression_statement "notReady = pLevel->notReady;" (assignment_expression "notReady = pLevel->notReady" identifier = (field_expression "pLevel->notReady" identifier -> field_identifier)) ;) (if_statement "if (0 < iVar58) {\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }" if (parenthesized_expression "(0 < iVar58)" ( (binary_expression "0 < iVar58" number_literal < identifier) )) (compound_statement "{\n      iVar26 = 0;\n      do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);\n    }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      } while (iVar26 < iVar58);" do (compound_statement "{\n        if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }\n        notReady = CONCAT44(uVar25,uVar53);\n        iVar26 = iVar26 + 1;\n        pWVar54 = pWVar54 + 1;\n      }" { (if_statement "if (((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)) {\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }" if (parenthesized_expression "(((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0))" ( (binary_expression "((pWVar54->wtFlags & 6) == 0) &&\n           ((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)" (parenthesized_expression "((pWVar54->wtFlags & 6) == 0)" ( (binary_expression "(pWVar54->wtFlags & 6) == 0" (parenthesized_expression "(pWVar54->wtFlags & 6)" ( (binary_expression "pWVar54->wtFlags & 6" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0)" ( (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0 &&\n            ((uint)pWVar54->prereqAll & uVar53) == 0" (binary_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25) == 0" (parenthesized_expression "(*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25)" ( (binary_expression "*(uint *)((int)&pWVar54->prereqAll + 4) & uVar25" (pointer_expression "*(uint *)((int)&pWVar54->prereqAll + 4)" * (cast_expression "(uint *)((int)&pWVar54->prereqAll + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar54->prereqAll + 4)" ( (binary_expression "(int)&pWVar54->prereqAll + 4" (cast_expression "(int)&pWVar54->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar54->prereqAll" & (field_expression "pWVar54->prereqAll" identifier -> field_identifier))) + number_literal) )))) & identifier) )) == number_literal) && (binary_expression "((uint)pWVar54->prereqAll & uVar53) == 0" (parenthesized_expression "((uint)pWVar54->prereqAll & uVar53)" ( (binary_expression "(uint)pWVar54->prereqAll & uVar53" (cast_expression "(uint)pWVar54->prereqAll" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar54->prereqAll" identifier -> field_identifier)) & identifier) )) == number_literal)) ))) )) (compound_statement "{\n          sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);\n          pWVar54->wtFlags = pWVar54->wtFlags | 4;\n          iVar58 = (pWInfo->sWC).nTerm;\n          uVar53 = (uint)pLevel->notReady;\n          uVar25 = *(uint *)((int)&pLevel->notReady + 4);\n        }" { (expression_statement "sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10);" (call_expression "sqlite3ExprIfFalse(pParse,pWVar54->pExpr,p2_00,0x10)" identifier (argument_list "(pParse,pWVar54->pExpr,p2_00,0x10)" ( identifier , (field_expression "pWVar54->pExpr" identifier -> field_identifier) , identifier , number_literal ))) ;) (expression_statement "pWVar54->wtFlags = pWVar54->wtFlags | 4;" (assignment_expression "pWVar54->wtFlags = pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) = (binary_expression "pWVar54->wtFlags | 4" (field_expression "pWVar54->wtFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "iVar58 = (pWInfo->sWC).nTerm;" (assignment_expression "iVar58 = (pWInfo->sWC).nTerm" identifier = (field_expression "(pWInfo->sWC).nTerm" (parenthesized_expression "(pWInfo->sWC)" ( (field_expression "pWInfo->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar53 = (uint)pLevel->notReady;" (assignment_expression "uVar53 = (uint)pLevel->notReady" identifier = (cast_expression "(uint)pLevel->notReady" ( (type_descriptor "uint" type_identifier) ) (field_expression "pLevel->notReady" identifier -> field_identifier))) ;) (expression_statement "uVar25 = *(uint *)((int)&pLevel->notReady + 4);" (assignment_expression "uVar25 = *(uint *)((int)&pLevel->notReady + 4)" identifier = (pointer_expression "*(uint *)((int)&pLevel->notReady + 4)" * (cast_expression "(uint *)((int)&pLevel->notReady + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pLevel->notReady + 4)" ( (binary_expression "(int)&pLevel->notReady + 4" (cast_expression "(int)&pLevel->notReady" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLevel->notReady" & (field_expression "pLevel->notReady" identifier -> field_identifier))) + number_literal) ))))) ;) })) (expression_statement "notReady = CONCAT44(uVar25,uVar53);" (assignment_expression "notReady = CONCAT44(uVar25,uVar53)" identifier = (call_expression "CONCAT44(uVar25,uVar53)" identifier (argument_list "(uVar25,uVar53)" ( identifier , identifier )))) ;) (expression_statement "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) ;) (expression_statement "pWVar54 = pWVar54 + 1;" (assignment_expression "pWVar54 = pWVar54 + 1" identifier = (binary_expression "pWVar54 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar26 < iVar58)" ( (binary_expression "iVar26 < iVar58" identifier < identifier) )) ;) })) })))) (labeled_statement "LAB_0009b549:\n  if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar6 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar6 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar6 != *(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 notReady;" return identifier ;) (labeled_statement "LAB_0009c960:\n  pIVar51 = pIVar51->pNext;" statement_identifier : (expression_statement "pIVar51 = pIVar51->pNext;" (assignment_expression "pIVar51 = pIVar51->pNext" identifier = (field_expression "pIVar51->pNext" identifier -> field_identifier)) ;)) (if_statement "if (pIVar51 == (Index *)0x0) goto LAB_0009ca50;" if (parenthesized_expression "(pIVar51 == (Index *)0x0)" ( (binary_expression "pIVar51 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (goto_statement "goto LAB_0009c96b;" goto statement_identifier ;) })))
(translation_unit "undefined8 __regparm3\nFUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)\n\n{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}\n\n" (function_definition "undefined8 __regparm3\nFUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)\n\n{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" ( (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 "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "short sVar17;" (sized_type_specifier "short" short) identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "ushort uVar32;" type_identifier identifier ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "byte *pbVar36;" type_identifier (pointer_declarator "*pbVar36" * identifier) ;) (declaration "uint uVar37;" type_identifier identifier ;) (declaration "uint uVar38;" type_identifier identifier ;) (declaration "undefined4 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "int iVar41;" primitive_type identifier ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "int iVar43;" primitive_type identifier ;) (declaration "uint *puVar44;" type_identifier (pointer_declarator "*puVar44" * identifier) ;) (declaration "uint uVar45;" type_identifier identifier ;) (declaration "int iVar46;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar47;" primitive_type identifier ;) (declaration "bool bVar48;" primitive_type identifier ;) (declaration "uint *local_194;" type_identifier (pointer_declarator "*local_194" * identifier) ;) (declaration "int local_184;" primitive_type identifier ;) (declaration "uint local_17c;" type_identifier identifier ;) (declaration "int local_168;" primitive_type identifier ;) (declaration "int local_158;" primitive_type identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "int local_144;" primitive_type identifier ;) (declaration "int local_140;" primitive_type identifier ;) (declaration "int local_13c;" primitive_type identifier ;) (declaration "int local_134;" primitive_type identifier ;) (declaration "int *local_12c;" primitive_type (pointer_declarator "*local_12c" * identifier) ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int *local_120;" primitive_type (pointer_declarator "*local_120" * identifier) ;) (declaration "uint local_118;" type_identifier identifier ;) (declaration "code *local_f0 [6];" type_identifier (pointer_declarator "*local_f0 [6]" * (array_declarator "local_f0 [6]" identifier [ number_literal ])) ;) (declaration "int *local_d8;" primitive_type (pointer_declarator "*local_d8" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "int local_d0;" primitive_type identifier ;) (declaration "int local_cc;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int *local_c0;" primitive_type (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "code *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "code *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int *local_a0;" primitive_type (pointer_declarator "*local_a0" * identifier) ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined2 local_74;" type_identifier identifier ;) (declaration "undefined1 local_72;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined2 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x9a949;" (assignment_expression "uStack_14 = 0x9a949" identifier = number_literal) ;) (expression_statement "iVar41 = *param_1;" (assignment_expression "iVar41 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar42 = param_5[0x12];" (assignment_expression "iVar42 = param_5[0x12]" identifier = (subscript_expression "param_5[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = (uint)*(byte *)(param_5 + 0xd);" (assignment_expression "uVar18 = (uint)*(byte *)(param_5 + 0xd)" identifier = (binary_expression "(uint)*(byte *)(param_5 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xd)" ( (binary_expression "param_5 + 0xd" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = param_3 + 0x12;" (assignment_expression "piVar1 = param_3 + 0x12" identifier = (binary_expression "param_3 + 0x12" identifier + number_literal)) ;) (expression_statement "iVar8 = param_3[1];" (assignment_expression "iVar8 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);" (assignment_expression "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44)" identifier = (pointer_expression "*(int *)(iVar8 + 0x30 + uVar18 * 0x44)" * (cast_expression "(int *)(iVar8 + 0x30 + uVar18 * 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x30 + uVar18 * 0x44" (binary_expression "iVar8 + 0x30" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) ))))) ;) (expression_statement "uVar35 = param_7;" (assignment_expression "uVar35 = param_7" identifier = identifier) ;) (expression_statement "uVar45 = param_6;" (assignment_expression "uVar45 = param_6" identifier = identifier) ;) (if_statement "if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" if (parenthesized_expression "(0 < param_3[0x79])" ( (binary_expression "0 < param_3[0x79]" number_literal < (subscript_expression "param_3[0x79]" identifier [ number_literal ])) )) (compound_statement "{\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" { (if_statement "if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" if (parenthesized_expression "(param_3[0x7a] == iVar9)" ( (binary_expression "param_3[0x7a] == iVar9" (subscript_expression "param_3[0x7a]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }" { (expression_statement "uVar45 = 0xfffffffe;" (assignment_expression "uVar45 = 0xfffffffe" identifier = number_literal) ;) (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" else (compound_statement "{\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);" do (compound_statement "{\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      }" { (expression_statement "uVar33 = uVar19 + 1;" (assignment_expression "uVar33 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (if_statement "if (param_3[0x79] == uVar33) goto LAB_0009a9fc;" if (parenthesized_expression "(param_3[0x79] == uVar33)" ( (binary_expression "param_3[0x79] == uVar33" (subscript_expression "param_3[0x79]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_0009a9fc;" goto statement_identifier ;)) (expression_statement "iVar20 = uVar19 + 0x7b;" (assignment_expression "iVar20 = uVar19 + 0x7b" identifier = (binary_expression "uVar19 + 0x7b" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar33;" (assignment_expression "uVar19 = uVar33" identifier = identifier) ;) }) while (parenthesized_expression "(iVar9 != param_3[iVar20])" ( (binary_expression "iVar9 != param_3[iVar20]" identifier != (subscript_expression "param_3[iVar20]" identifier [ identifier ])) )) ;) (expression_statement "bVar48 = (uVar33 & 0x20) == 0;" (assignment_expression "bVar48 = (uVar33 & 0x20) == 0" identifier = (binary_expression "(uVar33 & 0x20) == 0" (parenthesized_expression "(uVar33 & 0x20)" ( (binary_expression "uVar33 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f))" identifier = (unary_expression "~((uint)bVar48 << ((byte)uVar33 & 0x1f))" ~ (parenthesized_expression "((uint)bVar48 << ((byte)uVar33 & 0x1f))" ( (binary_expression "(uint)bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)bVar48" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" identifier = (unary_expression "~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" ~ (parenthesized_expression "((uint)!bVar48 << ((byte)uVar33 & 0x1f))" ( (binary_expression "(uint)!bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)!bVar48" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar48" ! identifier)) << (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) }))) (expression_statement "uVar35 = uVar35 & param_7;" (assignment_expression "uVar35 = uVar35 & param_7" identifier = (binary_expression "uVar35 & param_7" identifier & identifier)) ;) (expression_statement "uVar45 = uVar45 & param_6;" (assignment_expression "uVar45 = uVar45 & param_6" identifier = (binary_expression "uVar45 & param_6" identifier & identifier)) ;) })) (labeled_statement "LAB_0009a9fc:\n  param_5[0x14] = uVar35;" statement_identifier : (expression_statement "param_5[0x14] = uVar35;" (assignment_expression "param_5[0x14] = uVar35" (subscript_expression "param_5[0x14]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_5[0x13] = uVar45;" (assignment_expression "param_5[0x13] = uVar45" (subscript_expression "param_5[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar35 = param_3[0x11];" (assignment_expression "uVar35 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "uVar45 = param_3[0x10];" (assignment_expression "uVar45 = param_3[0x10]" identifier = (subscript_expression "param_3[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar20 = param_1[0xe] + -1;" (assignment_expression "iVar20 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar20;" (assignment_expression "param_1[0xe] = iVar20" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = iVar20;" (assignment_expression "param_5[4] = iVar20" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = iVar20;" (assignment_expression "param_5[3] = iVar20" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar40 = param_1[0xe] + -1;" (assignment_expression "iVar40 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = iVar40;" (assignment_expression "param_1[0xe] = iVar40" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = iVar40;" (assignment_expression "param_5[6] = iVar40" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" if (parenthesized_expression "(((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0))" ( (binary_expression "((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" (parenthesized_expression "((char)param_5[0xd] != '\0')" ( (binary_expression "(char)param_5[0xd] != '\0'" (cast_expression "(char)param_5[0xd]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_5[0xd]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8" (pointer_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" * (cast_expression "(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x2c + uVar18 * 0x44" (binary_expression "iVar8 + 0x2c" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" { (expression_statement "iVar34 = param_1[0xb] + 1;" (assignment_expression "iVar34 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar34;" (assignment_expression "param_1[0xb] = iVar34" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_5 = iVar34;" (assignment_expression "*param_5 = iVar34" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar19 = 0;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" else (compound_statement "{\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" { (expression_statement "uVar19 = param_4;" (assignment_expression "uVar19 = param_4" identifier = identifier) ;) (if_statement "if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" if (parenthesized_expression "(param_3[param_4 * 0x15 + 0xba] == 0)" ( (binary_expression "param_3[param_4 * 0x15 + 0xba] == 0" (subscript_expression "param_3[param_4 * 0x15 + 0xba]" identifier [ (binary_expression "param_4 * 0x15 + 0xba" (binary_expression "param_4 * 0x15" identifier * number_literal) + number_literal) ]) == number_literal) )) (compound_statement "{\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" { (expression_statement "piVar31 = param_3 + param_4 * 0x15 + 0xa5;" (assignment_expression "piVar31 = param_3 + param_4 * 0x15 + 0xa5" identifier = (binary_expression "param_3 + param_4 * 0x15 + 0xa5" (binary_expression "param_3 + param_4 * 0x15" identifier + (binary_expression "param_4 * 0x15" identifier * number_literal)) + number_literal)) ;) (do_statement "do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);" do (compound_statement "{\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      }" { (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar34 = *piVar31;" (assignment_expression "iVar34 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "piVar31 = piVar31 + -0x15;" (assignment_expression "piVar31 = piVar31 + -0x15" identifier = (binary_expression "piVar31 + -0x15" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) ;) })) }))) (expression_statement "iVar34 = uVar18 * 0x44 + iVar8;" (assignment_expression "iVar34 = uVar18 * 0x44 + iVar8" identifier = (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "bVar4 = *(byte *)(iVar34 + 0x2d);" (assignment_expression "bVar4 = *(byte *)(iVar34 + 0x2d)" identifier = (pointer_expression "*(byte *)(iVar34 + 0x2d)" * (cast_expression "(byte *)(iVar34 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x2d)" ( (binary_expression "iVar34 + 0x2d" identifier + number_literal) ))))) ;) (if_statement "if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" if (parenthesized_expression "((bVar4 & 0x10) == 0)" ( (binary_expression "(bVar4 & 0x10) == 0" (parenthesized_expression "(bVar4 & 0x10)" ( (binary_expression "bVar4 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" { (expression_statement "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" identifier = (binary_expression "uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" (binary_expression "uVar45 >> ((byte)param_4 & 0x1f)" identifier >> (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "uVar35 << 0x20 - ((byte)param_4 & 0x1f)" identifier << (binary_expression "0x20 - ((byte)param_4 & 0x1f)" number_literal - (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) (if_statement "if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" if (parenthesized_expression "((param_4 & 0x20) != 0)" ( (binary_expression "(param_4 & 0x20) != 0" (parenthesized_expression "(param_4 & 0x20)" ( (binary_expression "param_4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" { (expression_statement "uVar45 = uVar35 >> ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar35 >> ((byte)param_4 & 0x1f)" identifier = (binary_expression "uVar35 >> ((byte)param_4 & 0x1f)" identifier >> (parenthesized_expression "((byte)param_4 & 0x1f)" ( (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "uVar33 = uVar45 & 1;" (assignment_expression "uVar33 = uVar45 & 1" identifier = (binary_expression "uVar45 & 1" identifier & number_literal)) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" if (parenthesized_expression "((uVar35 & 0x400) == 0)" ( (binary_expression "(uVar35 & 0x400) == 0" (parenthesized_expression "(uVar35 & 0x400)" ( (binary_expression "uVar35 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }" { (if_statement "if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" if (parenthesized_expression "(((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0))" ( (binary_expression "((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)" (parenthesized_expression "((uVar35 & 0x100) == 0)" ( (binary_expression "(uVar35 & 0x100) == 0" (parenthesized_expression "(uVar35 & 0x100)" ( (binary_expression "uVar35 & 0x100" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar35 & 5) == 0)" ( (binary_expression "(uVar35 & 5) == 0" (parenthesized_expression "(uVar35 & 5)" ( (binary_expression "uVar35 & 5" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }" { (expression_statement "iVar34 = param_3[uVar19 * 0x15 + 0xbd];" (assignment_expression "iVar34 = param_3[uVar19 * 0x15 + 0xbd]" identifier = (subscript_expression "param_3[uVar19 * 0x15 + 0xbd]" identifier [ (binary_expression "uVar19 * 0x15 + 0xbd" (binary_expression "uVar19 * 0x15" identifier * number_literal) + number_literal) ])) ;) (if_statement "if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "((uVar35 & 0x102) == 0x102)" ( (binary_expression "(uVar35 & 0x102) == 0x102" (parenthesized_expression "(uVar35 & 0x102)" ( (binary_expression "uVar35 & 0x102" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" { (if_statement "if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\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            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }" { (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" identifier = (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "piVar31 = (int *)*piVar24;" (assignment_expression "piVar31 = (int *)*piVar24" identifier = (cast_expression "(int *)*piVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar24" * identifier))) ;) (if_statement "if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" if (parenthesized_expression "((uVar35 & 0x10) != 0)" ( (binary_expression "(uVar35 & 0x10) != 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" { (expression_statement "iVar41 = 4;" (assignment_expression "iVar41 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0009c28b;" goto statement_identifier ;) })) (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" identifier = identifier) ;) (if_statement "if (uVar33 != 0) goto LAB_0009c549;" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;)) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009bc9a;" if (parenthesized_expression "(piVar31 == (int *)0x0)" ( (binary_expression "piVar31 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009bc9a;" goto statement_identifier ;)) (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009c2a8;" goto statement_identifier ;) })) (if_statement "if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" if (parenthesized_expression "((uVar35 & 0x10) == 0)" ( (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }" { (if_statement "if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" { (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;) })) (labeled_statement "LAB_0009bc9a:\n            FUN_00049630(iVar34);" statement_identifier : (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;)) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;" statement_identifier : (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) }) (else_clause "else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" else (compound_statement "{\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" { (expression_statement "iVar41 = 0;" (assignment_expression "iVar41 = 0" identifier = number_literal) ;) (expression_statement "piVar31 = (int *)0x0;" (assignment_expression "piVar31 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" identifier = (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);" statement_identifier : (expression_statement "piVar11 = *(int **)((int)piVar24 + iVar41);" (assignment_expression "piVar11 = *(int **)((int)piVar24 + iVar41)" identifier = (pointer_expression "*(int **)((int)piVar24 + iVar41)" * (cast_expression "(int **)((int)piVar24 + iVar41)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + iVar41)" ( (binary_expression "(int)piVar24 + iVar41" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;)) (if_statement "if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }" { (expression_statement "piVar24 = piVar11;" (assignment_expression "piVar24 = piVar11" identifier = identifier) ;) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009c549;" if (parenthesized_expression "(piVar31 == (int *)0x0)" ( (binary_expression "piVar31 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009c549;" goto statement_identifier ;)) (labeled_statement "LAB_0009c2a8:\n              local_24 = 0x18161719;" statement_identifier : (expression_statement "local_24 = 0x18161719;" (assignment_expression "local_24 = 0x18161719" identifier = number_literal) ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" identifier = (pointer_expression "*(char **)(*piVar31 + 0x10)" * (cast_expression "(char **)(*piVar31 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0x10)" ( (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }" { (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;" statement_identifier : (if_statement "if (iVar41 < 2) goto LAB_0009c2d7;" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c2d7;" goto statement_identifier ;))) (if_statement "if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x13) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x13)" * (cast_expression "(char *)((int)param_1 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }" { (expression_statement "local_194 = (uint *)(param_1[0xb] + 1);" (assignment_expression "local_194 = (uint *)(param_1[0xb] + 1)" identifier = (cast_expression "(uint *)(param_1[0xb] + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0xb] + 1)" ( (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "param_1[0xb] = (int)local_194;" (assignment_expression "param_1[0xb] = (int)local_194" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" else (compound_statement "{\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" { (expression_statement "bVar16 = *(char *)((int)param_1 + 0x13) - 1;" (assignment_expression "bVar16 = *(char *)((int)param_1 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)param_1 + 0x13) - 1" (pointer_expression "*(char *)((int)param_1 + 0x13)" * (cast_expression "(char *)((int)param_1 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 0x13) = bVar16;" (assignment_expression "*(byte *)((int)param_1 + 0x13) = bVar16" (pointer_expression "*(byte *)((int)param_1 + 0x13)" * (cast_expression "(byte *)((int)param_1 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x13)" ( (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_194 = (uint *)param_1[bVar16 + 0x26];" (assignment_expression "local_194 = (uint *)param_1[bVar16 + 0x26]" identifier = (cast_expression "(uint *)param_1[bVar16 + 0x26]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[bVar16 + 0x26]" identifier [ (binary_expression "bVar16 + 0x26" identifier + number_literal) ]))) ;) }))) (expression_statement "local_b8 = (int)local_194;" (assignment_expression "local_b8 = (int)local_194" identifier = (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" else (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" { (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" { (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009cf97;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();" statement_identifier : (expression_statement "local_194 = (uint *)FUN_000958f0();" (assignment_expression "local_194 = (uint *)FUN_000958f0()" identifier = (cast_expression "(uint *)FUN_000958f0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000958f0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "FUN_000493f0(iVar20,local_194);" (call_expression "FUN_000493f0(iVar20,local_194)" identifier (argument_list "(iVar20,local_194)" ( identifier , identifier ))) ;) (if_statement "if (local_b8 != 0) {\n                FUN_000254e0();\n              }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_000254e0();\n              }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" else (compound_statement "{\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" { (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" identifier = identifier) ;) (expression_statement "piVar31 = piVar11;" (assignment_expression "piVar31 = piVar11" identifier = identifier) ;) (if_statement "if (piVar11 != (int *)0x0) goto LAB_0009c2a8;" if (parenthesized_expression "(piVar11 != (int *)0x0)" ( (binary_expression "piVar11 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009c2a8;" goto statement_identifier ;)) (labeled_statement "LAB_0009c549:\n              FUN_00049630(iVar34);" statement_identifier : (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;)) }))) (if_statement "if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" if (parenthesized_expression "(piVar24 != (int *)0x0)" ( (binary_expression "piVar24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" { (expression_statement "iVar41 = *piVar24;" (assignment_expression "iVar41 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + 1;" (assignment_expression "param_1[0xb] = param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pcVar10 = *(char **)(iVar41 + 0x10);" (assignment_expression "pcVar10 = *(char **)(iVar41 + 0x10)" identifier = (pointer_expression "*(char **)(iVar41 + 0x10)" * (cast_expression "(char **)(iVar41 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x10)" ( (binary_expression "iVar41 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }" { (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;" statement_identifier : (if_statement "if (iVar41 < 2) goto LAB_0009c3ac;" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0009c3ac;" goto statement_identifier ;))) }) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" else (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" { (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" { (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009d05c;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c3ac:\n                FUN_00020250();" statement_identifier : (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;)) }))) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" else (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "iVar41 = param_1[0xb] + 1;" (assignment_expression "iVar41 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar41;" (assignment_expression "param_1[0xb] = iVar41" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(iVar41);" (call_expression "FUN_00049630(iVar41)" identifier (argument_list "(iVar41)" ( identifier ))) ;) (expression_statement "FUN_000493f0(iVar20,iVar41);" (call_expression "FUN_000493f0(iVar20,iVar41)" identifier (argument_list "(iVar20,iVar41)" ( identifier , identifier ))) ;) (if_statement "if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" if (parenthesized_expression "(0 < param_2[0x1a])" ( (binary_expression "0 < param_2[0x1a]" number_literal < (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" { (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" identifier = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar33 == 0) goto LAB_0009bcbb;" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009bcbb;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (if_statement "if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" if (parenthesized_expression "((uVar35 & 0x200) == 0)" ( (binary_expression "(uVar35 & 0x200) == 0" (parenthesized_expression "(uVar35 & 0x200)" ( (binary_expression "uVar35 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" { (if_statement "if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" if (parenthesized_expression "((uVar35 & 0x2000) == 0)" ( (binary_expression "(uVar35 & 0x2000) == 0" (parenthesized_expression "(uVar35 & 0x2000)" ( (binary_expression "uVar35 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" { (if_statement "if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" if (parenthesized_expression "((bVar4 & 0x20) == 0)" ( (binary_expression "(bVar4 & 0x20) == 0" (parenthesized_expression "(bVar4 & 0x20)" ( (binary_expression "bVar4 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" { (expression_statement "uVar5 = (&DAT_000d8764)[uVar33];" (assignment_expression "uVar5 = (&DAT_000d8764)[uVar33]" identifier = (subscript_expression "(&DAT_000d8764)[uVar33]" (parenthesized_expression "(&DAT_000d8764)" ( (pointer_expression "&DAT_000d8764" & identifier) )) [ identifier ])) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = uVar5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = uVar5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar41 = FUN_00049630(iVar34);" (assignment_expression "iVar41 = FUN_00049630(iVar34)" identifier = (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier )))) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" * (cast_expression "(undefined1 *)((int)param_5 + 0x37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x37)" ( (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xf] = iVar41 + 1;" (assignment_expression "param_5[0xf] = iVar41 + 1" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (binary_expression "iVar41 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (expression_statement "iVar20 = param_1[10];" (assignment_expression "iVar20 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = iVar20 + 1;" (assignment_expression "param_1[10] = iVar20 + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar21 = param_1[0xb] + 1;" (assignment_expression "iVar21 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar22 = param_1[0xe] + -1;" (assignment_expression "iVar22 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar21;" (assignment_expression "param_1[0xb] = iVar21" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xe] = iVar22;" (assignment_expression "param_1[0xe] = iVar22" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);" (assignment_expression "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44)" identifier = (pointer_expression "*(int *)(iVar8 + 0x18 + uVar18 * 0x44)" * (cast_expression "(int *)(iVar8 + 0x18 + uVar18 * 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 0x18 + uVar18 * 0x44" (binary_expression "iVar8 + 0x18" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) ))))) ;) (expression_statement "piVar31 = (int *)**(int **)(iVar42 + 0x30);" (assignment_expression "piVar31 = (int *)**(int **)(iVar42 + 0x30)" identifier = (cast_expression "(int *)**(int **)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(iVar42 + 0x30)" * (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) ))))))) ;) (expression_statement "iVar42 = piVar31[7];" (assignment_expression "iVar42 = piVar31[7]" identifier = (subscript_expression "piVar31[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0x41;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0x41" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xe] = iVar21;" (assignment_expression "param_5[0xe] = iVar21" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" if (parenthesized_expression "(*(byte *)(param_3 + 0xb) < 2)" ( (binary_expression "*(byte *)(param_3 + 0xb) < 2" (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n            local_194 = (uint *)param_3[1];\n          }" { (expression_statement "local_194 = (uint *)param_3[1];" (assignment_expression "local_194 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" else (compound_statement "{\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" { (expression_statement "param_4 = *(byte *)(param_3 + 0xb) - param_4;" (assignment_expression "param_4 = *(byte *)(param_3 + 0xb) - param_4" identifier = (binary_expression "*(byte *)(param_3 + 0xb) - param_4" (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) )))) - identifier)) ;) (expression_statement "iVar43 = (param_4 - 1) * 0x44;" (assignment_expression "iVar43 = (param_4 - 1) * 0x44" identifier = (binary_expression "(param_4 - 1) * 0x44" (parenthesized_expression "(param_4 - 1)" ( (binary_expression "param_4 - 1" identifier - number_literal) )) * number_literal)) ;) (expression_statement "uVar35 = iVar43 + 0x4c;" (assignment_expression "uVar35 = iVar43 + 0x4c" identifier = (binary_expression "iVar43 + 0x4c" identifier + number_literal)) ;) (if_statement "if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" if (parenthesized_expression "(iVar41 == 0)" ( (binary_expression "iVar41 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }" { (if_statement "if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;" if (parenthesized_expression "((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU))" ( (binary_expression "(uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)" (parenthesized_expression "(uVar35 == 0)" ( (binary_expression "uVar35 == 0" identifier == number_literal) )) || (parenthesized_expression "(0x7ffffefe < iVar43 + 0x4bU)" ( (binary_expression "0x7ffffefe < iVar43 + 0x4bU" number_literal < (binary_expression "iVar43 + 0x4bU" identifier + number_literal)) ))) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;)) (if_statement "if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }" if (parenthesized_expression "(DAT_00106360 == 0)" ( (binary_expression "DAT_00106360 == 0" identifier == number_literal) )) (compound_statement "{\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }" { (expression_statement "local_194 = (uint *)(*DAT_00106380)(uVar35);" (assignment_expression "local_194 = (uint *)(*DAT_00106380)(uVar35)" identifier = (cast_expression "(uint *)(*DAT_00106380)(uVar35)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*DAT_00106380)(uVar35)" (parenthesized_expression "(*DAT_00106380)" ( (pointer_expression "*DAT_00106380" * identifier) )) (argument_list "(uVar35)" ( identifier ))))) ;) }) (else_clause "else {\n                local_194 = (uint *)FUN_000280e0();\n              }" else (compound_statement "{\n                local_194 = (uint *)FUN_000280e0();\n              }" { (expression_statement "local_194 = (uint *)FUN_000280e0();" (assignment_expression "local_194 = (uint *)FUN_000280e0()" identifier = (cast_expression "(uint *)FUN_000280e0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000280e0()" identifier (argument_list "()" ( ))))) ;) }))) (labeled_statement "LAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;" statement_identifier : (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009b549;" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;))) }) (else_clause "else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" else (compound_statement "{\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" { (if_statement "if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" if (parenthesized_expression "(*(ushort *)(iVar41 + 0x114) < uVar35)" ( (binary_expression "*(ushort *)(iVar41 + 0x114) < uVar35" (pointer_expression "*(ushort *)(iVar41 + 0x114)" * (cast_expression "(ushort *)(iVar41 + 0x114)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x114)" ( (binary_expression "iVar41 + 0x114" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" { (if_statement "if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" if (parenthesized_expression "(*(int *)(iVar41 + 0x110) == 0)" ( (binary_expression "*(int *)(iVar41 + 0x110) == 0" (pointer_expression "*(int *)(iVar41 + 0x110)" * (cast_expression "(int *)(iVar41 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x110)" ( (binary_expression "iVar41 + 0x110" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }" { (expression_statement "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;" (assignment_expression "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" * (cast_expression "(int *)(iVar41 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x124)" ( (binary_expression "iVar41 + 0x124" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" * (cast_expression "(int *)(iVar41 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x124)" ( (binary_expression "iVar41 + 0x124" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" else (if_statement "if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" if (parenthesized_expression "(*(char *)(iVar41 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar41 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" * (cast_expression "(char *)(iVar41 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x4d)" ( (binary_expression "iVar41 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0009b549;" goto statement_identifier ;)))) (labeled_statement "LAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();" statement_identifier : (expression_statement "local_194 = (uint *)FUN_0002eee0();" (assignment_expression "local_194 = (uint *)FUN_0002eee0()" identifier = (cast_expression "(uint *)FUN_0002eee0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002eee0()" identifier (argument_list "()" ( ))))) ;)) (goto_statement "goto LAB_0009d302;" goto statement_identifier ;) })) (if_statement "if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" if (parenthesized_expression "(uVar35 < 0x81)" ( (binary_expression "uVar35 < 0x81" identifier < number_literal) )) (compound_statement "{\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }" { (expression_statement "local_194 = *(uint **)(iVar41 + 0x138);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x138)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x138)" * (cast_expression "(uint **)(iVar41 + 0x138)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x138)" ( (binary_expression "iVar41 + 0x138" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }" { (expression_statement "local_194 = *(uint **)(iVar41 + 0x134);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x134)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x134)" * (cast_expression "(uint **)(iVar41 + 0x134)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x134)" ( (binary_expression "iVar41 + 0x134" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009d46c;" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009d46c;" goto statement_identifier ;)) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x134) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x134) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x134)" * (cast_expression "(uint *)(iVar41 + 0x134)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x134)" ( (binary_expression "iVar41 + 0x134" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" else (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" { (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x138) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x138) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x138)" * (cast_expression "(uint *)(iVar41 + 0x138)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x138)" ( (binary_expression "iVar41 + 0x138" identifier + number_literal) )))) = identifier) ;) }))) }) (else_clause "else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" else (compound_statement "{\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" { (labeled_statement "LAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);" statement_identifier : (expression_statement "local_194 = *(uint **)(iVar41 + 0x130);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x130)" identifier = (pointer_expression "*(uint **)(iVar41 + 0x130)" * (cast_expression "(uint **)(iVar41 + 0x130)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 0x130)" ( (binary_expression "iVar41 + 0x130" identifier + number_literal) ))))) ;)) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }" { (expression_statement "local_194 = *(uint **)(iVar41 + 300);" (assignment_expression "local_194 = *(uint **)(iVar41 + 300)" identifier = (pointer_expression "*(uint **)(iVar41 + 300)" * (cast_expression "(uint **)(iVar41 + 300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar41 + 300)" ( (binary_expression "iVar41 + 300" identifier + number_literal) ))))) ;) (if_statement "if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" if (parenthesized_expression "(local_194 == (uint *)0x0)" ( (binary_expression "local_194 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" { (expression_statement "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;" (assignment_expression "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" * (cast_expression "(int *)(iVar41 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x128)" ( (binary_expression "iVar41 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" * (cast_expression "(int *)(iVar41 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x128)" ( (binary_expression "iVar41 + 0x128" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_0009d2f9;" goto statement_identifier ;) })) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 300) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 300) = uVar35" (pointer_expression "*(uint *)(iVar41 + 300)" * (cast_expression "(uint *)(iVar41 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 300)" ( (binary_expression "iVar41 + 300" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" else (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" { (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" identifier = (pointer_expression "*local_194" * identifier)) ;) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" * (cast_expression "(int *)(iVar41 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x120)" ( (binary_expression "iVar41 + 0x120" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar41 + 0x130) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x130) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x130)" * (cast_expression "(uint *)(iVar41 + 0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x130)" ( (binary_expression "iVar41 + 0x130" identifier + number_literal) )))) = identifier) ;) }))) }))) }))) (expression_statement "local_194[1] = param_4 & 0xff;" (assignment_expression "local_194[1] = param_4 & 0xff" (subscript_expression "local_194[1]" identifier [ number_literal ]) = (binary_expression "param_4 & 0xff" identifier & number_literal)) ;) (expression_statement "*local_194 = param_4 & 0xff;" (assignment_expression "*local_194 = param_4 & 0xff" (pointer_expression "*local_194" * identifier) = (binary_expression "param_4 & 0xff" identifier & number_literal)) ;) (expression_statement "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);" (assignment_expression "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44)" identifier = (cast_expression "(uint *)(iVar8 + 8 + uVar18 * 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8 + uVar18 * 0x44)" ( (binary_expression "iVar8 + 8 + uVar18 * 0x44" (binary_expression "iVar8 + 8" identifier + number_literal) + (binary_expression "uVar18 * 0x44" identifier * number_literal)) )))) ;) (expression_statement "local_194[2] = *puVar28;" (assignment_expression "local_194[2] = *puVar28" (subscript_expression "local_194[2]" identifier [ number_literal ]) = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "local_194[0x12] = puVar28[0x10];" (assignment_expression "local_194[0x12] = puVar28[0x10]" (subscript_expression "local_194[0x12]" identifier [ number_literal ]) = (subscript_expression "puVar28[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));" (assignment_expression "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" identifier = (binary_expression "(int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" (cast_expression "(int)local_194" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" ( (binary_expression "8 - (int)((uint)(local_194 + 3) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(local_194 + 3) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" ( (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_194 + 3)" ( (binary_expression "local_194 + 3" identifier + number_literal) ))) & number_literal) )))) )))) ;) (expression_statement "puVar23 = (undefined4 *)((int)puVar28 - iVar41);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar28 - iVar41)" identifier = (cast_expression "(undefined4 *)((int)puVar28 - iVar41)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 - iVar41)" ( (binary_expression "(int)puVar28 - iVar41" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" ( (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_194 + 3)" ( (binary_expression "local_194 + 3" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" for ( (assignment_expression "uVar35 = iVar41 + 0x44U >> 2" identifier = (binary_expression "iVar41 + 0x44U >> 2" (binary_expression "iVar41 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar35 != 0" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" { (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" * identifier) = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "iVar41 = param_3[1];" (assignment_expression "iVar41 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" if (parenthesized_expression "(0 < (int)(param_4 - 1))" ( (binary_expression "0 < (int)(param_4 - 1)" number_literal < (cast_expression "(int)(param_4 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_4 - 1)" ( (binary_expression "param_4 - 1" identifier - number_literal) )))) )) (compound_statement "{\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" { (expression_statement "pbVar36 = (byte *)(param_5 + 0x22);" (assignment_expression "pbVar36 = (byte *)(param_5 + 0x22)" identifier = (cast_expression "(byte *)(param_5 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x22)" ( (binary_expression "param_5 + 0x22" identifier + number_literal) )))) ;) (expression_statement "puVar28 = local_194 + 0x13;" (assignment_expression "puVar28 = local_194 + 0x13" identifier = (binary_expression "local_194 + 0x13" identifier + number_literal)) ;) (do_statement "do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);" do (compound_statement "{\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              }" { (expression_statement "bVar4 = *pbVar36;" (assignment_expression "bVar4 = *pbVar36" identifier = (pointer_expression "*pbVar36" * identifier)) ;) (expression_statement "pbVar36 = pbVar36 + 0x54;" (assignment_expression "pbVar36 = pbVar36 + 0x54" identifier = (binary_expression "pbVar36 + 0x54" identifier + number_literal)) ;) (expression_statement "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);" (assignment_expression "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" identifier = (cast_expression "(uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)bVar4 * 0x44 + iVar41 + 8)" ( (binary_expression "(uint)bVar4 * 0x44 + iVar41 + 8" (binary_expression "(uint)bVar4 * 0x44 + iVar41" (binary_expression "(uint)bVar4 * 0x44" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + identifier) + number_literal) )))) ;) (expression_statement "*puVar28 = *puVar44;" (assignment_expression "*puVar28 = *puVar44" (pointer_expression "*puVar28" * identifier) = (pointer_expression "*puVar44" * identifier)) ;) (expression_statement "puVar28[0x10] = puVar44[0x10];" (assignment_expression "puVar28[0x10] = puVar44[0x10]" (subscript_expression "puVar28[0x10]" identifier [ number_literal ]) = (subscript_expression "puVar44[0x10]" identifier [ number_literal ])) ;) (expression_statement "puVar29 = puVar28 + 0x11;" (assignment_expression "puVar29 = puVar28 + 0x11" identifier = (binary_expression "puVar28 + 0x11" identifier + number_literal)) ;) (expression_statement "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" identifier = (binary_expression "(int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(puVar28 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar28 + 1)" ( (binary_expression "puVar28 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar23 = (undefined4 *)((int)puVar44 - iVar43);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar44 - iVar43)" identifier = (cast_expression "(undefined4 *)((int)puVar44 - iVar43)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar44 - iVar43)" ( (binary_expression "(int)puVar44 - iVar43" (cast_expression "(int)puVar44" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar28 + 1)" ( (binary_expression "puVar28 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" for ( (assignment_expression "uVar35 = iVar43 + 0x44U >> 2" identifier = (binary_expression "iVar43 + 0x44U >> 2" (binary_expression "iVar43 + 0x44U" identifier + number_literal) >> number_literal)) ; (binary_expression "uVar35 != 0" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" { (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" * identifier) = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar28 = puVar29;" (assignment_expression "puVar28 = puVar29" identifier = identifier) ;) }) while (parenthesized_expression "(local_194 + param_4 * 0x11 + 2 != puVar29)" ( (binary_expression "local_194 + param_4 * 0x11 + 2 != puVar29" (binary_expression "local_194 + param_4 * 0x11 + 2" (binary_expression "local_194 + param_4 * 0x11" identifier + (binary_expression "param_4 * 0x11" identifier * number_literal)) + number_literal) != identifier) )) ;) })) }))) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }" { (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" if (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" { (for_statement "for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" for ( (assignment_expression "iVar41 = *(int *)(iVar34 + 8)" identifier = (pointer_expression "*(int *)(iVar34 + 8)" * (cast_expression "(int *)(iVar34 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 8)" ( (binary_expression "iVar34 + 8" identifier + number_literal) ))))) ; (binary_expression "iVar41 != 0" identifier != number_literal) ; (assignment_expression "iVar41 = *(int *)(iVar41 + 0x14)" identifier = (pointer_expression "*(int *)(iVar41 + 0x14)" * (cast_expression "(int *)(iVar41 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x14)" ( (binary_expression "iVar41 + 0x14" identifier + number_literal) ))))) ) (compound_statement "{\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" { (if_statement "if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" if (parenthesized_expression "((*(byte *)(iVar41 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" * (cast_expression "(byte *)(iVar41 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x37)" ( (binary_expression "iVar41 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" { (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "FUN_00049630(*(undefined2 *)(iVar41 + 0x32));" (call_expression "FUN_00049630(*(undefined2 *)(iVar41 + 0x32))" identifier (argument_list "(*(undefined2 *)(iVar41 + 0x32))" ( (pointer_expression "*(undefined2 *)(iVar41 + 0x32)" * (cast_expression "(undefined2 *)(iVar41 + 0x32)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x32)" ( (binary_expression "iVar41 + 0x32" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00051750();" (call_expression "FUN_00051750()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0009b879;" goto statement_identifier ;) })) })) (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;) })) (expression_statement "iVar41 = param_1[0xb];" (assignment_expression "iVar41 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar41 + 1;" (assignment_expression "param_1[0xb] = iVar41 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar41 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00049630(iVar41 + 1);" (call_expression "FUN_00049630(iVar41 + 1)" identifier (argument_list "(iVar41 + 1)" ( (binary_expression "iVar41 + 1" identifier + number_literal) ))) ;) (labeled_statement "LAB_0009b879:\n            local_140 = param_1[0xb] + 1;" statement_identifier : (expression_statement "local_140 = param_1[0xb] + 1;" (assignment_expression "local_140 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "param_1[0xb] = local_140;" (assignment_expression "param_1[0xb] = local_140" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_140 = 0;\n          }" else (compound_statement "{\n            local_140 = 0;\n          }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = FUN_00049630(iVar21);" (assignment_expression "iVar21 = FUN_00049630(iVar21)" identifier = (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier )))) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" if (parenthesized_expression "(iVar41 < 2)" ( (binary_expression "iVar41 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0009d0ac:\n            local_134 = 0;\n          }" { (labeled_statement "LAB_0009d0ac:\n            local_134 = 0;" statement_identifier : (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" else (compound_statement "{\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" { (do_statement "do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);" do (compound_statement "{\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            }" { (expression_statement "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);" (assignment_expression "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17])" identifier = (cast_expression "(int *)(iVar27 * 0x30 + param_3[0x17])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 * 0x30 + param_3[0x17])" ( (binary_expression "iVar27 * 0x30 + param_3[0x17]" (binary_expression "iVar27 * 0x30" identifier * number_literal) + (subscript_expression "param_3[0x17]" identifier [ number_literal ])) )))) ;) (if_statement "if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" if (parenthesized_expression "(((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0))" ( (binary_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" (parenthesized_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0))" ( (binary_expression "(piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)" (parenthesized_expression "(piVar24 != piVar31)" ( (binary_expression "piVar24 != piVar31" identifier != identifier) )) && (parenthesized_expression "((*(byte *)((int)piVar24 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)piVar24 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 10) & 6)" ( (binary_expression "*(byte *)((int)piVar24 + 10) & 6" (pointer_expression "*(byte *)((int)piVar24 + 10)" * (cast_expression "(byte *)((int)piVar24 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + 10)" ( (binary_expression "(int)piVar24 + 10" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" ( (binary_expression "(*(ushort *)(piVar24 + 3) & 0x1fff) != 0" (parenthesized_expression "(*(ushort *)(piVar24 + 3) & 0x1fff)" ( (binary_expression "*(ushort *)(piVar24 + 3) & 0x1fff" (pointer_expression "*(ushort *)(piVar24 + 3)" * (cast_expression "(ushort *)(piVar24 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar24 + 3)" ( (binary_expression "piVar24 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" { (if_statement "if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }" if (parenthesized_expression "(*piVar24 != 0)" ( (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" * identifier) != number_literal) )) (compound_statement "{\n                  FUN_0005dca0();\n                }" { (expression_statement "FUN_0005dca0();" (call_expression "FUN_0005dca0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar43 = FUN_000559f0();" (assignment_expression "iVar43 = FUN_000559f0()" identifier = (call_expression "FUN_000559f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) })) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < iVar41)" ( (binary_expression "iVar27 < iVar41" identifier < identifier) )) ;) (if_statement "if (iVar43 == 0) goto LAB_0009d0ac;" if (parenthesized_expression "(iVar43 == 0)" ( (binary_expression "iVar43 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009d0ac;" goto statement_identifier ;)) (expression_statement "local_134 = FUN_000556e0();" (assignment_expression "local_134 = FUN_000556e0()" identifier = (call_expression "FUN_000556e0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "uVar32 = *(ushort *)(param_3 + 10);" (assignment_expression "uVar32 = *(ushort *)(param_3 + 10)" identifier = (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) ))))) ;) (expression_statement "FUN_000496a0(param_1,1,"MULTI-INDEX OR");" (call_expression "FUN_000496a0(param_1,1,"MULTI-INDEX OR")" identifier (argument_list "(param_1,1,"MULTI-INDEX OR")" ( identifier , number_literal , (string_literal ""MULTI-INDEX OR"" " string_content ") ))) ;) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" identifier = (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" if (parenthesized_expression "(iVar41 < 1)" ( (binary_expression "iVar41 < 1" identifier < number_literal) )) (compound_statement "{\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }" { (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009cb9d;" goto statement_identifier ;) })) (expression_statement "param_5[0x10] = 0;" (assignment_expression "param_5[0x10] = 0" (subscript_expression "param_5[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) }) (else_clause "else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" else (compound_statement "{\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (do_statement "do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);" do (compound_statement "{\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            }" { (expression_statement "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));" (assignment_expression "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" identifier = (cast_expression "(undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" ( (binary_expression "iVar43 * 0x30 + *(int *)(iVar42 + 0x14)" (binary_expression "iVar43 * 0x30" identifier * number_literal) + (pointer_expression "*(int *)(iVar42 + 0x14)" * (cast_expression "(int *)(iVar42 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x14)" ( (binary_expression "iVar42 + 0x14" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar27 = iVar43 + 1;" (assignment_expression "iVar27 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (if_statement "if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" if (parenthesized_expression "((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0))" ( (binary_expression "(puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" (parenthesized_expression "(puVar23[5] == iVar9)" ( (binary_expression "puVar23[5] == iVar9" (subscript_expression "puVar23[5]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 0xd) & 4) != 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 0xd) & 4)" ( (binary_expression "*(byte *)((int)puVar23 + 0xd) & 4" (pointer_expression "*(byte *)((int)puVar23 + 0xd)" * (cast_expression "(byte *)((int)puVar23 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 0xd)" ( (binary_expression "(int)puVar23 + 0xd" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" { (if_statement "if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" if (parenthesized_expression "(local_134 != 0)" ( (binary_expression "local_134 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" { (expression_statement "*(undefined4 *)(local_134 + 0xc) = *puVar23;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = *puVar23" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" * (cast_expression "(undefined4 *)(local_134 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_134 + 0xc)" ( (binary_expression "local_134 + 0xc" identifier + number_literal) )))) = (pointer_expression "*puVar23" * identifier)) ;) })) (expression_statement "FUN_000496a0(param_1,1,"INDEX %d",iVar27);" (call_expression "FUN_000496a0(param_1,1,"INDEX %d",iVar27)" identifier (argument_list "(param_1,1,"INDEX %d",iVar27)" ( identifier , number_literal , (string_literal ""INDEX %d"" " string_content ") , identifier ))) ;) (expression_statement "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);" (assignment_expression "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" identifier = (call_expression "FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" identifier (argument_list "(0,0,uVar32 & 0x400 | 0x20,iVar20)" ( number_literal , number_literal , (binary_expression "uVar32 & 0x400 | 0x20" (binary_expression "uVar32 & 0x400" identifier & number_literal) | number_literal) , identifier )))) ;) (if_statement "if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" { (expression_statement "piVar31 = (int *)param_1[0x1d];" (assignment_expression "piVar31 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    piVar31 = param_1;\n                  }" { (expression_statement "piVar31 = param_1;" (assignment_expression "piVar31 = param_1" identifier = identifier) ;) })) (if_statement "if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }" if (parenthesized_expression "(*(char *)((int)piVar31 + 0xcb) == '\x02')" ( (binary_expression "*(char *)((int)piVar31 + 0xcb) == '\x02'" (pointer_expression "*(char *)((int)piVar31 + 0xcb)" * (cast_expression "(char *)((int)piVar31 + 0xcb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 0xcb)" ( (binary_expression "(int)piVar31 + 0xcb" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    FUN_0005ac00(0);\n                  }" { (expression_statement "FUN_0005ac00(0);" (call_expression "FUN_0005ac00(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }" { (if_statement "if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }" if (parenthesized_expression "(*(int *)(iVar42 + 0xc) + -1 == iVar43)" ( (binary_expression "*(int *)(iVar42 + 0xc) + -1 == iVar43" (binary_expression "*(int *)(iVar42 + 0xc) + -1" (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) )))) + number_literal) == identifier) )) (compound_statement "{\n                      iVar43 = -1;\n                    }" { (expression_statement "iVar43 = -1;" (assignment_expression "iVar43 = -1" identifier = number_literal) ;) })) (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" if (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) == 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }" { (expression_statement "FUN_00095620(0xffffffff,local_140);" (call_expression "FUN_00095620(0xffffffff,local_140)" identifier (argument_list "(0xffffffff,local_140)" ( number_literal , identifier ))) ;) (expression_statement "iVar25 = FUN_000493f0(0,local_140);" (assignment_expression "iVar25 = FUN_000493f0(0,local_140)" identifier = (call_expression "FUN_000493f0(0,local_140)" identifier (argument_list "(0,local_140)" ( number_literal , identifier )))) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" { (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" identifier = (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" * (cast_expression "(undefined1 *)(iVar2 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar2 + 0x10) = iVar43;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar43" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" else (compound_statement "{\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" { (expression_statement "iVar2 = *(int *)(iVar34 + 8);" (assignment_expression "iVar2 = *(int *)(iVar34 + 8)" identifier = (pointer_expression "*(int *)(iVar34 + 8)" * (cast_expression "(int *)(iVar34 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 8)" ( (binary_expression "iVar34 + 8" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" { (if_statement "if (iVar2 == 0) goto LAB_0009ca50;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)(iVar2 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar2 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar2 + 0x37) & 3" (pointer_expression "*(byte *)(iVar2 + 0x37)" * (cast_expression "(byte *)(iVar2 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x37)" ( (binary_expression "iVar2 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = *(int *)(iVar2 + 0x14);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x14)" identifier = (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "uVar35 = (uint)*(ushort *)(iVar2 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar2 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar2 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x32)" ( (binary_expression "iVar2 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "iVar30 = FUN_00025510();" (assignment_expression "iVar30 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" if (parenthesized_expression "(uVar35 != 0)" ( (binary_expression "uVar35 != 0" identifier != number_literal) )) (compound_statement "{\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" { (expression_statement "iVar46 = 0;" (assignment_expression "iVar46 = 0" identifier = number_literal) ;) (expression_statement "iVar25 = iVar30;" (assignment_expression "iVar25 = iVar30" identifier = identifier) ;) (do_statement "do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);" do (compound_statement "{\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        }" { (expression_statement "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);" (assignment_expression "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46)" identifier = (cast_expression "(short *)(*(int *)(iVar2 + 4) + iVar46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + iVar46)" ( (binary_expression "*(int *)(iVar2 + 4) + iVar46" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar46 = iVar46 + 2;" (assignment_expression "iVar46 = iVar46 + 2" identifier = (binary_expression "iVar46 + 2" identifier + number_literal)) ;) (expression_statement "FUN_00095620((int)*psVar3,iVar25);" (call_expression "FUN_00095620((int)*psVar3,iVar25)" identifier (argument_list "((int)*psVar3,iVar25)" ( (cast_expression "(int)*psVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar3" * identifier)) , identifier ))) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar35 * 2 != iVar46)" ( (binary_expression "uVar35 * 2 != iVar46" (binary_expression "uVar35 * 2" identifier * number_literal) != identifier) )) ;) })) (if_statement "if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" if (parenthesized_expression "(iVar43 == 0)" ( (binary_expression "iVar43 == 0" identifier == number_literal) )) (compound_statement "{\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }" { (expression_statement "FUN_000493f0(uVar35,local_140);" (call_expression "FUN_000493f0(uVar35,local_140)" identifier (argument_list "(uVar35,local_140)" ( identifier , identifier ))) ;) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" identifier (argument_list "(local_140,iVar30,uVar35)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" else (compound_statement "{\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" { (expression_statement "iVar25 = FUN_000493f0(0,iVar30);" (assignment_expression "iVar25 = FUN_000493f0(0,iVar30)" identifier = (call_expression "FUN_000493f0(0,iVar30)" identifier (argument_list "(0,iVar30)" ( number_literal , identifier )))) ;) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" if (parenthesized_expression "(*(char *)(iVar2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x4d)" * (cast_expression "(char *)(iVar2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4d)" ( (binary_expression "iVar2 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" { (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" identifier = (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" * (cast_expression "(undefined1 *)(iVar2 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar2 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar2 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar2 + 0x10)" * (cast_expression "(uint *)(iVar2 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" if (parenthesized_expression "(-1 < iVar43)" ( (binary_expression "-1 < iVar43" number_literal < identifier) )) (compound_statement "{\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" { (expression_statement "FUN_000493f0(uVar35,local_140,iVar2,iVar2);" (call_expression "FUN_000493f0(uVar35,local_140,iVar2,iVar2)" identifier (argument_list "(uVar35,local_140,iVar2,iVar2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" identifier (argument_list "(local_140,iVar30,uVar35)" ( identifier , identifier , identifier ))) ;) (if_statement "if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" if (parenthesized_expression "(0 < param_2[0x1a])" ( (binary_expression "0 < param_2[0x1a]" number_literal < (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" { (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" ( (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) })) }))) (if_statement "if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" if (parenthesized_expression "(uVar35 == 1)" ( (binary_expression "uVar35 == 1" identifier == number_literal) )) (compound_statement "{\n                        FUN_00029ad0();\n                      }" { (expression_statement "FUN_00029ad0();" (call_expression "FUN_00029ad0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" else (if_statement "if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" if (parenthesized_expression "(param_1[7] < (int)uVar35)" ( (binary_expression "param_1[7] < (int)uVar35" (subscript_expression "param_1[7]" identifier [ number_literal ]) < (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" { (expression_statement "param_1[7] = uVar35;" (assignment_expression "param_1[7] = uVar35" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = iVar30;" (assignment_expression "param_1[8] = iVar30" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })))) }))) (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" identifier (argument_list "(iVar22)" ( identifier ))) ;) (if_statement "if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" if (parenthesized_expression "(iVar25 != 0)" ( (binary_expression "iVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" { (if_statement "if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar25 = param_2[0x1a] + -1;\n                      }" { (expression_statement "iVar25 = param_2[0x1a] + -1;" (assignment_expression "iVar25 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar25 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar25 * 0x14)" ( (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar25 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n                    FUN_00049630(iVar22);\n                  }" else (compound_statement "{\n                    FUN_00049630(iVar22);\n                  }" { (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" identifier (argument_list "(iVar22)" ( identifier ))) ;) }))) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) (if_statement "if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }" if (parenthesized_expression "((*(byte *)(iVar41 + 0x30) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar41 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar41 + 0x30) & 2)" ( (binary_expression "*(byte *)(iVar41 + 0x30) & 2" (pointer_expression "*(byte *)(iVar41 + 0x30)" * (cast_expression "(byte *)(iVar41 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x30)" ( (binary_expression "iVar41 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    bVar13 = bVar48;\n                  }" { (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" identifier = identifier) ;) })) (expression_statement "bVar48 = bVar13;" (assignment_expression "bVar48 = bVar13" identifier = identifier) ;) (if_statement "if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" if (parenthesized_expression "(((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))))" ( (binary_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" (parenthesized_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2)" ( (binary_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2" (pointer_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" * (cast_expression "(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x25)" ( (binary_expression "*(int *)(iVar41 + 0x330) + 0x25" (pointer_expression "*(int *)(iVar41 + 0x330)" * (cast_expression "(int *)(iVar41 + 0x330)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x330)" ( (binary_expression "iVar41 + 0x330" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" ( (parenthesized_expression "(iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))" ( (comma_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)" (assignment_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20)" identifier = (pointer_expression "*(int *)(*(int *)(iVar41 + 0x330) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar41 + 0x330) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x20)" ( (binary_expression "*(int *)(iVar41 + 0x330) + 0x20" (pointer_expression "*(int *)(iVar41 + 0x330)" * (cast_expression "(int *)(iVar41 + 0x330)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x330)" ( (binary_expression "iVar41 + 0x330" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "iVar27 != 1 &&\n                      (local_13c != iVar41)" (binary_expression "iVar27 != 1" identifier != number_literal) && (parenthesized_expression "(local_13c != iVar41)" ( (binary_expression "local_13c != iVar41" identifier != identifier) )))) )) ))) )) (compound_statement "{\n                    local_13c = 0;\n                  }" { (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" else (compound_statement "{\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" { (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }" if (parenthesized_expression "(((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2))" ( (binary_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" ( (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" * (cast_expression "(byte *)(iVar34 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x24)" ( (binary_expression "iVar34 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" ( (comma_expression "local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2" (assignment_expression "local_13c = 0" identifier = number_literal) , (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" * (cast_expression "(byte *)(iVar41 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x37)" ( (binary_expression "iVar41 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                      local_13c = iVar41;\n                    }" { (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" identifier = identifier) ;) })) }))) (expression_statement "FUN_00069230();" (call_expression "FUN_00069230()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" if (parenthesized_expression "(iVar41 < 0)" ( (binary_expression "iVar41 < 0" identifier < number_literal) )) (compound_statement "{\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" { (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" identifier = (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" { (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" ( (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" identifier = (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" identifier = (pointer_expression "*(int *)(iVar42 + 0xc)" * (cast_expression "(int *)(iVar42 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) })) (expression_statement "iVar43 = iVar27;" (assignment_expression "iVar43 = iVar27" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 < iVar41)" ( (binary_expression "iVar27 < iVar41" identifier < identifier) )) ;) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" identifier = (subscript_expression "param_1[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" if (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" { (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" statement_identifier : (if_statement "if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar41 < 0)" ( (binary_expression "iVar41 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar41 = piVar31[0x1a] + -1;\n              }" { (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" identifier = (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" { (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" ( (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" identifier = (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0x10] = local_13c;" (assignment_expression "param_5[0x10] = local_13c" (subscript_expression "param_5[0x10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }" if (parenthesized_expression "(local_13c != 0)" ( (binary_expression "local_13c != 0" identifier != number_literal) )) (compound_statement "{\n              param_5[2] = iVar20;\n            }" { (expression_statement "param_5[2] = iVar20;" (assignment_expression "param_5[2] = iVar20" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) })) }))) (if_statement "if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" if (parenthesized_expression "(local_134 != 0)" ( (binary_expression "local_134 != 0" identifier != number_literal) )) (compound_statement "{\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" { (expression_statement "*(undefined4 *)(local_134 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = 0" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" * (cast_expression "(undefined4 *)(local_134 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_134 + 0xc)" ( (binary_expression "local_134 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar41 = param_2[0x1a] + -1;" (assignment_expression "iVar41 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }" if (parenthesized_expression "(-1 < iVar21)" ( (binary_expression "-1 < iVar21" number_literal < identifier) )) (compound_statement "{\n            iVar41 = iVar21;\n          }" { (expression_statement "iVar41 = iVar21;" (assignment_expression "iVar41 = iVar21" identifier = identifier) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar41 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar41 * 0x14)" ( (binary_expression "param_2[0x19] + iVar41 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar41 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 4) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 4) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 4)" * (cast_expression "(int *)(puVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 4)" ( (binary_expression "puVar26 + 4" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" identifier (argument_list "(param_5[3])" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }" if (parenthesized_expression "((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0))" ( (binary_expression "(1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)" (parenthesized_expression "(1 < *(byte *)(param_3 + 0xb))" ( (binary_expression "1 < *(byte *)(param_3 + 0xb)" number_literal < (pointer_expression "*(byte *)(param_3 + 0xb)" * (cast_expression "(byte *)(param_3 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb)" ( (binary_expression "param_3 + 0xb" identifier + number_literal) ))))) )) && (parenthesized_expression "(local_194 != (uint *)0x0)" ( (binary_expression "local_194 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            FUN_00023410();\n          }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" if (parenthesized_expression "(!bVar48)" ( (unary_expression "!bVar48" ! identifier) )) (compound_statement "{\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" { (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;) })) (expression_statement "uVar32 = *(ushort *)(iVar42 + 0x1c);" (assignment_expression "uVar32 = *(ushort *)(iVar42 + 0x1c)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x1c)" * (cast_expression "(ushort *)(iVar42 + 0x1c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(ushort *)(iVar42 + 0x18);" (assignment_expression "uVar6 = *(ushort *)(iVar42 + 0x18)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x18)" * (cast_expression "(ushort *)(iVar42 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x18)" ( (binary_expression "iVar42 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_118 = (uint)uVar6;" (assignment_expression "local_118 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = *(ushort *)(iVar42 + 0x1a);" (assignment_expression "uVar7 = *(ushort *)(iVar42 + 0x1a)" identifier = (pointer_expression "*(ushort *)(iVar42 + 0x1a)" * (cast_expression "(ushort *)(iVar42 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1a)" ( (binary_expression "iVar42 + 0x1a" identifier + number_literal) ))))) ;) (expression_statement "local_158 = *(int *)(iVar42 + 0x20);" (assignment_expression "local_158 = *(int *)(iVar42 + 0x20)" identifier = (pointer_expression "*(int *)(iVar42 + 0x20)" * (cast_expression "(int *)(iVar42 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x20)" ( (binary_expression "iVar42 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar41 = param_5[2];" (assignment_expression "iVar41 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\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          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }" { (expression_statement "uVar37 = 0;" (assignment_expression "uVar37 = 0" identifier = number_literal) ;) (expression_statement "local_120 = (int *)0x0;" (assignment_expression "local_120 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar19 = local_118;" (assignment_expression "uVar19 = local_118" identifier = identifier) ;) }) (else_clause "else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" else (compound_statement "{\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" { (expression_statement "uVar37 = (uint)uVar7;" (assignment_expression "uVar37 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);" (assignment_expression "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + local_118 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + local_118 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "local_118 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar19 = local_118 + 1;" (assignment_expression "uVar19 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) }))) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (if_statement "if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" if (parenthesized_expression "((uVar35 & 0x10) == 0)" ( (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" ( (binary_expression "uVar35 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "local_12c = (int *)0x0;" (assignment_expression "local_12c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" else (compound_statement "{\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" { (expression_statement "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);" (assignment_expression "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar19 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + uVar19 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }" if (parenthesized_expression "(uVar37 < uVar32)" ( (binary_expression "uVar37 < uVar32" identifier < identifier) )) (compound_statement "{\n            uVar37 = (uint)uVar32;\n          }" { (expression_statement "uVar37 = (uint)uVar32;" (assignment_expression "uVar37 = (uint)uVar32" identifier = (cast_expression "(uint)uVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" * (cast_expression "(byte *)((int)local_12c + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_12c + 0xb)" ( (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" { (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = local_168;" (assignment_expression "param_5[0xb] = local_168" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "param_5[0xc] = param_2[0x1a];" (assignment_expression "param_5[0xc] = param_2[0x1a]" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar20 = param_5[0xb];" (assignment_expression "iVar20 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_5[0xb] = iVar20 * 2;" (assignment_expression "param_5[0xb] = iVar20 * 2" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = (binary_expression "iVar20 * 2" identifier * number_literal)) ;) (expression_statement "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;" (assignment_expression "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" * (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" ( (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" * (cast_expression "(int *)(local_158 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x1c)" ( (binary_expression "local_158 + 0x1c" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\x01'" ' escape_sequence ')) ^ identifier) | (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) })) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (if_statement "if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" if (parenthesized_expression "(local_120 == (int *)0x0)" ( (binary_expression "local_120 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" { (expression_statement "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);" (assignment_expression "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" identifier = (cast_expression "(int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" * (cast_expression "(short *)(*(int *)(local_158 + 4) + local_118 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 4) + local_118 * 2)" ( (binary_expression "*(int *)(local_158 + 4) + local_118 * 2" (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) + (binary_expression "local_118 * 2" identifier * number_literal)) )))))) ;) (if_statement "if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" if (parenthesized_expression "(iVar34 < 0)" ( (binary_expression "iVar34 < 0" identifier < number_literal) )) (compound_statement "{\n              bVar48 = iVar34 == -2;\n            }" { (expression_statement "bVar48 = iVar34 == -2;" (assignment_expression "bVar48 = iVar34 == -2" identifier = (binary_expression "iVar34 == -2" identifier == number_literal)) ;) }) (else_clause "else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" else (compound_statement "{\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" { (expression_statement "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';" (assignment_expression "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" identifier = (binary_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" * (cast_expression "(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" ( (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc" (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14" (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 4)" ( (binary_expression "*(int *)(local_158 + 0xc) + 4" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar34 * 0x14" identifier * number_literal)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) }))) })) }))) (expression_statement "local_128 = 0;" (assignment_expression "local_128 = 0" identifier = number_literal) ;) (if_statement "if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" if (parenthesized_expression "((uVar35 & 0x80030) == 0x80000)" ( (binary_expression "(uVar35 & 0x80030) == 0x80000" (parenthesized_expression "(uVar35 & 0x80030)" ( (binary_expression "uVar35 & 0x80030" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" { (expression_statement "iVar34 = *param_5;" (assignment_expression "iVar34 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[9] = local_168;" (assignment_expression "param_5[9] = local_168" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar20 = local_168;" (assignment_expression "iVar20 = local_168" identifier = identifier) ;) (if_statement "if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" if (parenthesized_expression "(iVar34 != 0)" ( (binary_expression "iVar34 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" { (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) (expression_statement "iVar34 = param_1[0xe];" (assignment_expression "iVar34 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" identifier = true) ;) (expression_statement "uVar37 = 1;" (assignment_expression "uVar37 = 1" identifier = number_literal) ;) (expression_statement "param_1[0xe] = iVar34 + -1;" (assignment_expression "param_1[0xe] = iVar34 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "local_128 = local_168;" (assignment_expression "local_128 = local_168" identifier = identifier) ;) (expression_statement "param_5[10] = iVar34 + -1;" (assignment_expression "param_5[10] = iVar34 + -1" (subscript_expression "param_5[10]" identifier [ number_literal ]) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) })) (if_statement "if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" if (parenthesized_expression "(uVar6 < *(ushort *)(local_158 + 0x32))" ( (binary_expression "uVar6 < *(ushort *)(local_158 + 0x32)" identifier < (pointer_expression "*(ushort *)(local_158 + 0x32)" * (cast_expression "(ushort *)(local_158 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x32)" ( (binary_expression "local_158 + 0x32" identifier + number_literal) ))))) )) (compound_statement "{\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }" { (if_statement "if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;" if (parenthesized_expression "((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)" ( (binary_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33" (parenthesized_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0')" ( (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" * (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" ( (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" * (cast_expression "(int *)(local_158 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x1c)" ( (binary_expression "local_158 + 0x1c" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) == identifier) )) (goto_statement "goto LAB_0009c48d;" goto statement_identifier ;)) (labeled_statement "LAB_0009ac34:\n          uVar6 = uVar32;" statement_identifier : (expression_statement "uVar6 = uVar32;" (assignment_expression "uVar6 = uVar32" identifier = identifier) ;)) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" identifier = identifier) ;) }) (else_clause "else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" else (compound_statement "{\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" { (if_statement "if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;" if (parenthesized_expression "((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0))" ( (binary_expression "(*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)" (parenthesized_expression "(*(ushort *)(local_158 + 0x32) != uVar6)" ( (binary_expression "*(ushort *)(local_158 + 0x32) != uVar6" (pointer_expression "*(ushort *)(local_158 + 0x32)" * (cast_expression "(ushort *)(local_158 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x32)" ( (binary_expression "local_158 + 0x32" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "((uVar45 & 1) == 0)" ( (binary_expression "(uVar45 & 1) == 0" (parenthesized_expression "(uVar45 & 1)" ( (binary_expression "uVar45 & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009ac34;" goto statement_identifier ;)) (labeled_statement "LAB_0009c48d:\n          piVar31 = local_12c;" statement_identifier : (expression_statement "piVar31 = local_12c;" (assignment_expression "piVar31 = local_12c" identifier = identifier) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "local_12c = local_120;" (assignment_expression "local_12c = local_120" identifier = identifier) ;) (expression_statement "uVar6 = uVar7 & 0xff;" (assignment_expression "uVar6 = uVar7 & 0xff" identifier = (binary_expression "uVar7 & 0xff" identifier & number_literal)) ;) (expression_statement "local_120 = piVar31;" (assignment_expression "local_120 = piVar31" identifier = identifier) ;) (expression_statement "uVar7 = uVar32;" (assignment_expression "uVar7 = uVar32" identifier = identifier) ;) }))) (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar34 = param_5[0x12];" (assignment_expression "iVar34 = param_5[0x12]" identifier = (subscript_expression "param_5[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar32 = *(ushort *)(iVar34 + 0x2a);" (assignment_expression "uVar32 = *(ushort *)(iVar34 + 0x2a)" identifier = (pointer_expression "*(ushort *)(iVar34 + 0x2a)" * (cast_expression "(ushort *)(iVar34 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x2a)" ( (binary_expression "iVar34 + 0x2a" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = (uint)uVar32;" (assignment_expression "uVar35 = (uint)uVar32" identifier = (cast_expression "(uint)uVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar45 = (uint)*(ushort *)(iVar34 + 0x18);" (assignment_expression "uVar45 = (uint)*(ushort *)(iVar34 + 0x18)" identifier = (binary_expression "(uint)*(ushort *)(iVar34 + 0x18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar34 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x18)" ( (binary_expression "iVar34 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_1[0xb] = iVar20 + uVar37 + uVar45;" (assignment_expression "param_1[0xb] = iVar20 + uVar37 + uVar45" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar20 + uVar37 + uVar45" (binary_expression "iVar20 + uVar37" identifier + identifier) + identifier)) ;) (expression_statement "FUN_0002e410();" (call_expression "FUN_0002e410()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar20 = FUN_000300b0();" (assignment_expression "iVar20 = FUN_000300b0()" identifier = (call_expression "FUN_000300b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" if (parenthesized_expression "(uVar32 != 0)" ( (binary_expression "uVar32 != 0" identifier != number_literal) )) (compound_statement "{\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" { (if_statement "if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" if (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) }) (else_clause "else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" else (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) }))) (expression_statement "iVar22 = FUN_000493f0(0,local_168);" (assignment_expression "iVar22 = FUN_000493f0(0,local_168)" identifier = (call_expression "FUN_000493f0(0,local_168)" identifier (argument_list "(0,local_168)" ( number_literal , identifier )))) ;) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" if (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" * (cast_expression "(char *)(*piVar31 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0x4d)" ( (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }" { (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" identifier = (subscript_expression "piVar31[0x19]" identifier [ number_literal ])) ;) (expression_statement "iVar43 = iVar27 + iVar22 * 0x14;" (assignment_expression "iVar43 = iVar27 + iVar22 * 0x14" identifier = (binary_expression "iVar27 + iVar22 * 0x14" identifier + (binary_expression "iVar22 * 0x14" identifier * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar43 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar43 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar43 + 1)" * (cast_expression "(undefined1 *)(iVar43 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 1)" ( (binary_expression "iVar43 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar43 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar43 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar43 + 0x10)" * (cast_expression "(uint *)(iVar43 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 0x10)" ( (binary_expression "iVar43 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" identifier = (subscript_expression "piVar31[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" { (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" identifier = (subscript_expression "piVar31[0x19]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = iVar22 + -1;" (assignment_expression "iVar21 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) })) (expression_statement "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14)" identifier = (cast_expression "(undefined1 *)(iVar27 + iVar21 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + iVar21 * 0x14)" ( (binary_expression "iVar27 + iVar21 * 0x14" identifier + (binary_expression "iVar21 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" else (compound_statement "{\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" { (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" identifier = (subscript_expression "piVar31[0x1a]" identifier [ number_literal ])) ;) }))) (expression_statement "*(int *)(puVar26 + 8) = iVar22;" (assignment_expression "*(int *)(puVar26 + 8) = iVar22" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);" do (compound_statement "{\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          }" { (expression_statement "uVar38 = uVar19 + 1;" (assignment_expression "uVar38 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000493f0(uVar19,local_168 + uVar19);" (call_expression "FUN_000493f0(uVar19,local_168 + uVar19)" identifier (argument_list "(uVar19,local_168 + uVar19)" ( identifier , (binary_expression "local_168 + uVar19" identifier + identifier) ))) ;) (expression_statement "uVar19 = uVar38;" (assignment_expression "uVar19 = uVar38" identifier = identifier) ;) }) while (parenthesized_expression "(uVar38 != uVar35)" ( (binary_expression "uVar38 != uVar35" identifier != identifier) )) ;) })) (if_statement "if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" if (parenthesized_expression "(uVar35 < uVar45)" ( (binary_expression "uVar35 < uVar45" identifier < identifier) )) (compound_statement "{\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" { (expression_statement "local_154 = uVar35 * 4;" (assignment_expression "local_154 = uVar35 * 4" identifier = (binary_expression "uVar35 * 4" identifier * number_literal)) ;) (do_statement "do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);" do (compound_statement "{\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          }" { (expression_statement "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154)" identifier = (pointer_expression "*(int **)(*(int *)(iVar34 + 0x30) + local_154)" * (cast_expression "(int **)(*(int *)(iVar34 + 0x30) + local_154)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar34 + 0x30) + local_154)" ( (binary_expression "*(int *)(iVar34 + 0x30) + local_154" (pointer_expression "*(int *)(iVar34 + 0x30)" * (cast_expression "(int *)(iVar34 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x30)" ( (binary_expression "iVar34 + 0x30" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar21 = local_168 + uVar35;" (assignment_expression "iVar21 = local_168 + uVar35" identifier = (binary_expression "local_168 + uVar35" identifier + identifier)) ;) (expression_statement "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);" (assignment_expression "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21)" identifier = (call_expression "FUN_0009a2d0(uVar35,uVar33,iVar21)" identifier (argument_list "(uVar35,uVar33,iVar21)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" if (parenthesized_expression "(iVar21 != iVar22)" ( (binary_expression "iVar21 != iVar22" identifier != identifier) )) (compound_statement "{\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" { (if_statement "if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }" if (parenthesized_expression "(uVar37 + uVar45 == 1)" ( (binary_expression "uVar37 + uVar45 == 1" (binary_expression "uVar37 + uVar45" identifier + identifier) == number_literal) )) (compound_statement "{\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }" { (expression_statement "bVar47 = local_168 != 0;" (assignment_expression "bVar47 = local_168 != 0" identifier = (binary_expression "local_168 != 0" identifier != number_literal)) ;) (expression_statement "local_168 = iVar22;" (assignment_expression "local_168 = iVar22" identifier = identifier) ;) (if_statement "if (bVar47) {\n                  FUN_000254e0();\n                }" if (parenthesized_expression "(bVar47)" ( identifier )) (compound_statement "{\n                  FUN_000254e0();\n                }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n                FUN_00049630(iVar21);\n              }" else (compound_statement "{\n                FUN_00049630(iVar21);\n              }" { (expression_statement "FUN_00049630(iVar21);" (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier ))) ;) }))) })) (if_statement "if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" if (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 1) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 1)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 1" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" { (if_statement "if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;" if (parenthesized_expression "(((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0))" ( (binary_expression "((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)" (parenthesized_expression "((*(byte *)(*piVar31 + 5) & 8) != 0)" ( (binary_expression "(*(byte *)(*piVar31 + 5) & 8) != 0" (parenthesized_expression "(*(byte *)(*piVar31 + 5) & 8)" ( (binary_expression "*(byte *)(*piVar31 + 5) & 8" (pointer_expression "*(byte *)(*piVar31 + 5)" * (cast_expression "(byte *)(*piVar31 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 5)" ( (binary_expression "*piVar31 + 5" (pointer_expression "*piVar31" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;) })) (if_statement "if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;" if (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x100) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x100) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x100)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x100" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" identifier = (pointer_expression "*(char **)(*piVar31 + 0x10)" * (cast_expression "(char **)(*piVar31 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0x10)" ( (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (if_statement "if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }" if (parenthesized_expression "(((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               )" ( (binary_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)((int)piVar31 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 0xb) & 8)" ( (binary_expression "*(byte *)((int)piVar31 + 0xb) & 8" (pointer_expression "*(byte *)((int)piVar31 + 0xb)" * (cast_expression "(byte *)((int)piVar31 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 0xb)" ( (binary_expression "(int)piVar31 + 0xb" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar21 = FUN_0001fe30(), iVar21 != 0)" ( (comma_expression "iVar21 = FUN_0001fe30(), iVar21 != 0" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) , (binary_expression "iVar21 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              FUN_00049630(param_5[3]);\n            }" { (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" identifier (argument_list "(param_5[3])" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) ))) ;) })) (if_statement "if (iVar20 == 0) goto LAB_0009adbc;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (expression_statement "cVar15 = *(char *)(iVar20 + uVar35);" (assignment_expression "cVar15 = *(char *)(iVar20 + uVar35)" identifier = (pointer_expression "*(char *)(iVar20 + uVar35)" * (cast_expression "(char *)(iVar20 + uVar35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar35)" ( (binary_expression "iVar20 + uVar35" identifier + identifier) ))))) ;) (expression_statement "cVar14 = FUN_0002e3d0();" (assignment_expression "cVar14 = FUN_0002e3d0()" identifier = (call_expression "FUN_0002e3d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;" if (parenthesized_expression "((cVar14 == 'A') || (cVar15 == 'A'))" ( (binary_expression "(cVar14 == 'A') || (cVar15 == 'A')" (parenthesized_expression "(cVar14 == 'A')" ( (binary_expression "cVar14 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(cVar15 == 'A')" ( (binary_expression "cVar15 == 'A'" identifier == (char_literal "'A'" ' character ')) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (while_statement "while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" while (parenthesized_expression "((byte)(cVar14 + 0x56U) < 2)" ( (binary_expression "(byte)(cVar14 + 0x56U) < 2" (call_expression "(byte)(cVar14 + 0x56U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar14 + 0x56U)" ( (binary_expression "cVar14 + 0x56U" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" { (expression_statement "pcVar10 = *(char **)(pcVar10 + 0xc);" (assignment_expression "pcVar10 = *(char **)(pcVar10 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar10 + 0xc)" * (cast_expression "(char **)(pcVar10 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0xc)" ( (binary_expression "pcVar10 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }" if (parenthesized_expression "(cVar14 == -0x56)" ( (binary_expression "cVar14 == -0x56" identifier == number_literal) )) (compound_statement "{\n                bVar16 = 1;\n              }" { (expression_statement "bVar16 = 1;" (assignment_expression "bVar16 = 1" identifier = number_literal) ;) })) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) })) (if_statement "if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }" if (parenthesized_expression "(cVar14 == -0x53)" ( (binary_expression "cVar14 == -0x53" identifier == number_literal) )) (compound_statement "{\n              cVar14 = pcVar10[2];\n            }" { (expression_statement "cVar14 = pcVar10[2];" (assignment_expression "cVar14 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (switch_statement "switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" switch (parenthesized_expression "(cVar14)" ( identifier )) (compound_statement "{\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" { (case_statement "case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;" case (char_literal "'s'" ' character ') : (expression_statement "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));" (assignment_expression "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1))" identifier = (cast_expression "(bool)(cVar15 == 'B' & (bVar16 ^ 1))" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(cVar15 == 'B' & (bVar16 ^ 1))" ( (binary_expression "cVar15 == 'B' & (bVar16 ^ 1)" (binary_expression "cVar15 == 'B'" identifier == (char_literal "'B'" ' character ')) & (parenthesized_expression "(bVar16 ^ 1)" ( (binary_expression "bVar16 ^ 1" identifier ^ number_literal) ))) )))) ;) (break_statement "break;" break ;)) (case_statement "default:\n              goto LAB_0009adbc;" default : (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) (case_statement "case -0x6a:" case number_literal :) (case_statement "case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;" case number_literal : (expression_statement "bVar47 = 'B' < cVar15;" (assignment_expression "bVar47 = 'B' < cVar15" identifier = (binary_expression "'B' < cVar15" (char_literal "'B'" ' character ') < identifier)) ;) (break_statement "break;" break ;)) (case_statement "case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;" case number_literal : (expression_statement "bVar47 = (bool)(bVar16 ^ 1);" (assignment_expression "bVar47 = (bool)(bVar16 ^ 1)" identifier = (cast_expression "(bool)(bVar16 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar16 ^ 1)" ( (binary_expression "bVar16 ^ 1" identifier ^ number_literal) )))) ;) (break_statement "break;" break ;)) (case_statement "case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;" case number_literal : (if_statement "if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;" if (parenthesized_expression "(('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0))" ( (binary_expression "('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)" (parenthesized_expression "('B' < cVar15)" ( (binary_expression "'B' < cVar15" (char_literal "'B'" ' character ') < identifier) )) && (parenthesized_expression "(*(short *)(pcVar10 + 0x20) < 0)" ( (binary_expression "*(short *)(pcVar10 + 0x20) < 0" (pointer_expression "*(short *)(pcVar10 + 0x20)" * (cast_expression "(short *)(pcVar10 + 0x20)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x20)" ( (binary_expression "pcVar10 + 0x20" identifier + number_literal) )))) < number_literal) ))) )) (goto_statement "goto LAB_0009adb4;" goto statement_identifier ;)) (goto_statement "goto LAB_0009adbc;" goto statement_identifier ;)) })) (if_statement "if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" if (parenthesized_expression "(bVar47)" ( identifier )) (compound_statement "{\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" { (labeled_statement "LAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;" statement_identifier : (expression_statement "*(undefined1 *)(iVar20 + uVar35) = 0x41;" (assignment_expression "*(undefined1 *)(iVar20 + uVar35) = 0x41" (pointer_expression "*(undefined1 *)(iVar20 + uVar35)" * (cast_expression "(undefined1 *)(iVar20 + uVar35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar35)" ( (binary_expression "iVar20 + uVar35" identifier + identifier) )))) = number_literal) ;)) })) (labeled_statement "LAB_0009adbc:\n            uVar35 = uVar35 + 1;" statement_identifier : (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" identifier = (binary_expression "uVar35 + 1" identifier + number_literal)) ;)) (expression_statement "local_154 = local_154 + 4;" (assignment_expression "local_154 = local_154 + 4" identifier = (binary_expression "local_154 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar45 != uVar35)" ( (binary_expression "uVar45 != uVar35" identifier != identifier) )) ;) })) (if_statement "if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }" if (parenthesized_expression "((uVar6 == 0) || (iVar20 == 0))" ( (binary_expression "(uVar6 == 0) || (iVar20 == 0)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          local_144 = 0;\n        }" { (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_144 = FUN_000300b0();\n        }" else (compound_statement "{\n          local_144 = FUN_000300b0();\n        }" { (expression_statement "local_144 = FUN_000300b0();" (assignment_expression "local_144 = FUN_000300b0()" identifier = (call_expression "FUN_000300b0()" identifier (argument_list "()" ( )))) ;) }))) (if_statement "if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar34 = param_5[4];\n        }" { (expression_statement "iVar34 = param_5[4];" (assignment_expression "iVar34 = param_5[4]" identifier = (subscript_expression "param_5[4]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          iVar34 = param_5[10];\n        }" else (compound_statement "{\n          iVar34 = param_5[10];\n        }" { (expression_statement "iVar34 = param_5[10];" (assignment_expression "iVar34 = param_5[10]" identifier = (subscript_expression "param_5[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" if (parenthesized_expression "(local_120 == (int *)0x0)" ( (binary_expression "local_120 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }" { (if_statement "if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }" { (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" identifier (argument_list "(local_168 + local_118)" ( (binary_expression "local_168 + local_118" identifier + identifier) ))) ;) (expression_statement "local_140 = 1;" (assignment_expression "local_140 = 1" identifier = number_literal) ;) (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "local_154 = 0;" (assignment_expression "local_154 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" else (if_statement "if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (expression_statement "uVar35 = local_118;" (assignment_expression "uVar35 = local_118" identifier = identifier) ;) }) (else_clause "else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" else (compound_statement "{\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" { (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" identifier (argument_list "(local_168 + local_118)" ( (binary_expression "local_168 + local_118" identifier + identifier) ))) ;) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) }))))) }) (else_clause "else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" else (compound_statement "{\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" { (expression_statement "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);" (assignment_expression "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" identifier = (call_expression "(uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(byte *)(local_120 + 3) & 0x28) != 0)" ( (binary_expression "(*(byte *)(local_120 + 3) & 0x28) != 0" (parenthesized_expression "(*(byte *)(local_120 + 3) & 0x28)" ( (binary_expression "*(byte *)(local_120 + 3) & 0x28" (pointer_expression "*(byte *)(local_120 + 3)" * (cast_expression "(byte *)(local_120 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_120 + 3)" ( (binary_expression "local_120 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )))) ;) (expression_statement "pcVar10 = *(char **)(*local_120 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_120 + 0x10)" identifier = (pointer_expression "*(char **)(*local_120 + 0x10)" * (cast_expression "(char **)(*local_120 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_120 + 0x10)" ( (binary_expression "*local_120 + 0x10" (pointer_expression "*local_120" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00095030((uint)uVar7);" (call_expression "FUN_00095030((uint)uVar7)" identifier (argument_list "((uint)uVar7)" ( (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (if_statement "if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_120 + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_120 + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_120 + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_120 + 0xb) & 1" (pointer_expression "*(byte *)((int)local_120 + 0xb)" * (cast_expression "(byte *)((int)local_120 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_120 + 0xb)" ( (binary_expression "(int)local_120 + 0xb" (cast_expression "(int)local_120" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" { (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" ( (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal) + number_literal) )) * number_literal)) )))) ;) })) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" * (cast_expression "(ushort *)(puVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 2)" ( (binary_expression "puVar26 + 2" identifier + number_literal) )))) = (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" * (cast_expression "(uint *)(puVar26 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) = (binary_expression "uVar35 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" { (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (iVar20 != 0) {\n            FUN_0002e510();\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0002e510();\n          }" { (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "uVar35 = uVar7 + local_118;" (assignment_expression "uVar35 = uVar7 + local_118" identifier = (binary_expression "uVar7 + local_118" identifier + identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }" { (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" statement_identifier : (if_statement "if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" if (parenthesized_expression "(1 < iVar21)" ( (binary_expression "1 < iVar21" number_literal < identifier) )) (compound_statement "{\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" { (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0009be0e;" goto statement_identifier ;) }))) }) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" else (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009c725;" goto statement_identifier ;) })))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0009be0e:\n        FUN_00049800(iVar20);" statement_identifier : (expression_statement "FUN_00049800(iVar20);" (call_expression "FUN_00049800(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;)) (if_statement "if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" if (parenthesized_expression "((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35))" ( (binary_expression "(*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)" (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) == 0)" ( (binary_expression "*(ushort *)(iVar42 + 0x2a) == 0" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" * (cast_expression "(ushort *)(iVar42 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x2a)" ( (binary_expression "iVar42 + 0x2a" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) != uVar35)" ( (binary_expression "*(ushort *)(iVar42 + 0x2a) != uVar35" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" * (cast_expression "(ushort *)(iVar42 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x2a)" ( (binary_expression "iVar42 + 0x2a" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" { (if_statement "if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }" if (parenthesized_expression "((*(byte *)(iVar42 + 0x26) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar42 + 0x26) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar42 + 0x26) & 4)" ( (binary_expression "*(byte *)(iVar42 + 0x26) & 4" (pointer_expression "*(byte *)(iVar42 + 0x26)" * (cast_expression "(byte *)(iVar42 + 0x26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x26)" ( (binary_expression "iVar42 + 0x26" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            FUN_00049630(0);\n          }" { (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (if_statement "if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00068470(iVar34,local_168,uVar35);\n          }" { (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" identifier (argument_list "(iVar34,local_168,uVar35)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" else (compound_statement "{\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" { (expression_statement "FUN_00049630(local_128);" (call_expression "FUN_00049630(local_128)" identifier (argument_list "(local_128)" ( identifier ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" identifier (argument_list "(iVar34,local_168,uVar35)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" identifier (argument_list "(param_2[0x1a] + 2)" ( (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,uVar35 - local_154);" (call_expression "FUN_00068470(iVar34,local_168,uVar35 - local_154)" identifier (argument_list "(iVar34,local_168,uVar35 - local_154)" ( identifier , identifier , (binary_expression "uVar35 - local_154" identifier - identifier) ))) ;) }))) })) (if_statement "if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" if (parenthesized_expression "(local_12c == (int *)0x0)" ( (binary_expression "local_12c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }" { (if_statement "if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" if (parenthesized_expression "(bVar48)" ( identifier )) (compound_statement "{\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" { (if_statement "if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }" if (parenthesized_expression "(local_128 == 0)" ( (binary_expression "local_128 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_00049630(local_118 + local_168);\n            }" { (expression_statement "FUN_00049630(local_118 + local_168);" (call_expression "FUN_00049630(local_118 + local_168)" identifier (argument_list "(local_118 + local_168)" ( (binary_expression "local_118 + local_168" identifier + identifier) ))) ;) })) (expression_statement "local_118 = local_118 + 1;" (assignment_expression "local_118 = local_118 + 1" identifier = (binary_expression "local_118 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" else (compound_statement "{\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" { (expression_statement "pcVar10 = *(char **)(*local_12c + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_12c + 0x10)" identifier = (pointer_expression "*(char **)(*local_12c + 0x10)" * (cast_expression "(char **)(*local_12c + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_12c + 0x10)" ( (binary_expression "*local_12c + 0x10" (pointer_expression "*local_12c" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00095030((uint)uVar6);" (call_expression "FUN_00095030((uint)uVar6)" identifier (argument_list "((uint)uVar6)" ( (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" if (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" ( (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" ( (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" * (cast_expression "(byte *)((int)local_12c + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_12c + 0xb)" ( (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" { (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" ( (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" ( (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) * number_literal) + number_literal) )) * number_literal)) )))) ;) })) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" identifier = (subscript_expression "param_5[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" * (cast_expression "(ushort *)(puVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 2)" ( (binary_expression "puVar26 + 2" identifier + number_literal) )))) = (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" * (cast_expression "(uint *)(puVar26 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) = (binary_expression "uVar35 >> 1" identifier >> number_literal)) ;) })) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" identifier = (call_expression "FUN_0001fe30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" { (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" identifier (argument_list "(iVar34)" ( identifier ))) ;) })) (if_statement "if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" if (parenthesized_expression "(local_144 != 0)" ( (binary_expression "local_144 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" { (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049800(local_144);" (call_expression "FUN_00049800(local_144)" identifier (argument_list "(local_144)" ( identifier ))) ;) })) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "local_118 = uVar6 + local_118;" (assignment_expression "local_118 = uVar6 + local_118" identifier = (binary_expression "uVar6 + local_118" identifier + identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(cVar15 == -0x52)" ( (binary_expression "cVar15 == -0x52" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }" { (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;" statement_identifier : (if_statement "if (1 < iVar21) goto LAB_0009bf64;" if (parenthesized_expression "(1 < iVar21)" ( (binary_expression "1 < iVar21" number_literal < identifier) )) (goto_statement "goto LAB_0009bf64;" goto statement_identifier ;))) }) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" else (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009d041;" goto statement_identifier ;) })))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }" statement_identifier : (if_statement "if (iVar20 != 0) {\n          FUN_00023410();\n        }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00023410();\n        }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_144 != 0) {\n          FUN_00023410();\n        }" if (parenthesized_expression "(local_144 != 0)" ( (binary_expression "local_144 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00023410();\n        }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" if (parenthesized_expression "(local_118 != 0)" ( (binary_expression "local_118 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" { (if_statement "if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }" if (parenthesized_expression "(local_128 != 0)" ( (binary_expression "local_128 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00049630(param_2[0x1a] + 3);\n          }" { (expression_statement "FUN_00049630(param_2[0x1a] + 3);" (call_expression "FUN_00049630(param_2[0x1a] + 3)" identifier (argument_list "(param_2[0x1a] + 3)" ( (binary_expression "param_2[0x1a] + 3" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) })) (expression_statement "FUN_00068470(iVar34,local_168,local_118);" (call_expression "FUN_00068470(iVar34,local_168,local_118)" identifier (argument_list "(iVar34,local_168,local_118)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" if (parenthesized_expression "(local_128 != 0)" ( (binary_expression "local_128 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" { (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" identifier (argument_list "(param_2[0x1a] + 2)" ( (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "FUN_00068470(iVar34,local_168,local_118 + local_140);" (call_expression "FUN_00068470(iVar34,local_168,local_118 + local_140)" identifier (argument_list "(iVar34,local_168,local_118 + local_140)" ( identifier , identifier , (binary_expression "local_118 + local_140" identifier + identifier) ))) ;) })) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" if (parenthesized_expression "((uVar35 & 0x40000) != 0)" ( (binary_expression "(uVar35 & 0x40000) != 0" (parenthesized_expression "(uVar35 & 0x40000)" ( (binary_expression "uVar35 & 0x40000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" { (expression_statement "FUN_00049630(1);" (call_expression "FUN_00049630(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) })) (if_statement "if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" if (parenthesized_expression "(((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0))" ( (binary_expression "((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)" (parenthesized_expression "((uVar35 & 0x40) == 0)" ( (binary_expression "(uVar35 & 0x40) == 0" (parenthesized_expression "(uVar35 & 0x40)" ( (binary_expression "uVar35 & 0x40" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }" { (if_statement "if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" if (parenthesized_expression "((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0)" ( (binary_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80)" ( (binary_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80" (pointer_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24)" * (cast_expression "(byte *)(*(int *)(local_158 + 0xc) + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 0x24)" ( (binary_expression "*(int *)(local_158 + 0xc) + 0x24" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }" { (if_statement "if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))" ( (binary_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0)" ( (binary_expression "(*(ushort *)(param_3 + 10) & 0x400) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x400)" ( (binary_expression "*(ushort *)(param_3 + 10) & 0x400" (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" ( (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))" ( (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x1000)" ( (binary_expression "*(ushort *)(param_3 + 10) & 0x1000" (pointer_expression "*(ushort *)(param_3 + 10)" * (cast_expression "(ushort *)(param_3 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" ( (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))" ( (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)" (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" * (cast_expression "(char *)((int)param_3 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x2e)" ( (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(iVar42 + 0x28) == 0)" ( (binary_expression "*(short *)(iVar42 + 0x28) == 0" (pointer_expression "*(short *)(iVar42 + 0x28)" * (cast_expression "(short *)(iVar42 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x28)" ( (binary_expression "iVar42 + 0x28" identifier + number_literal) )))) == number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" { (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;) (expression_statement "FUN_000493f0(0,iVar20);" (call_expression "FUN_000493f0(0,iVar20)" identifier (argument_list "(0,iVar20)" ( number_literal , identifier ))) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (expression_statement "iVar20 = *param_3;" (assignment_expression "iVar20 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "FUN_000493f0(0,iVar9);" (call_expression "FUN_000493f0(0,iVar9)" identifier (argument_list "(0,iVar9)" ( number_literal , identifier ))) ;) (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009c03e;" goto statement_identifier ;) })) (expression_statement "iVar34 = *(int *)(iVar20 + 0x74);" (assignment_expression "iVar34 = *(int *)(iVar20 + 0x74)" identifier = (pointer_expression "*(int *)(iVar20 + 0x74)" * (cast_expression "(int *)(iVar20 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x74)" ( (binary_expression "iVar20 + 0x74" identifier + number_literal) ))))) ;) (if_statement "if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }" if (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar34 = iVar20;\n            }" { (expression_statement "iVar34 = iVar20;" (assignment_expression "iVar34 = iVar20" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" if (parenthesized_expression "(*(int *)(iVar34 + 0x50) == 0)" ( (binary_expression "*(int *)(iVar34 + 0x50) == 0" (pointer_expression "*(int *)(iVar34 + 0x50)" * (cast_expression "(int *)(iVar34 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x50)" ( (binary_expression "iVar34 + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" { (expression_statement "iVar20 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar20 = *(int *)(local_158 + 0xc)" identifier = (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar31 = (int *)FUN_0004e890();" (assignment_expression "piVar31 = (int *)FUN_0004e890()" identifier = (cast_expression "(int *)FUN_0004e890()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004e890()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" if (parenthesized_expression "(piVar31 != (int *)0x0)" ( (binary_expression "piVar31 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" { (expression_statement "*piVar31 = (int)*(short *)(iVar20 + 0x2a);" (assignment_expression "*piVar31 = (int)*(short *)(iVar20 + 0x2a)" (pointer_expression "*piVar31" * identifier) = (cast_expression "(int)*(short *)(iVar20 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar20 + 0x2a)" * (cast_expression "(short *)(iVar20 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x2a)" ( (binary_expression "iVar20 + 0x2a" identifier + number_literal) )))))) ;) (expression_statement "uVar32 = *(ushort *)(local_158 + 0x34);" (assignment_expression "uVar32 = *(ushort *)(local_158 + 0x34)" identifier = (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" if (parenthesized_expression "(1 < uVar32)" ( (binary_expression "1 < uVar32" number_literal < identifier) )) (compound_statement "{\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" { (expression_statement "iVar34 = *(int *)(local_158 + 4);" (assignment_expression "iVar34 = *(int *)(local_158 + 4)" identifier = (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);" do (compound_statement "{\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  }" { (expression_statement "sVar17 = *(short *)(iVar34 + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(iVar34 + iVar21 * 2)" identifier = (pointer_expression "*(short *)(iVar34 + iVar21 * 2)" * (cast_expression "(short *)(iVar34 + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + iVar21 * 2)" ( (binary_expression "iVar34 + iVar21 * 2" identifier + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" if (parenthesized_expression "((*(byte *)(iVar20 + 0x24) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar20 + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar20 + 0x24) & 0x20)" ( (binary_expression "*(byte *)(iVar20 + 0x24) & 0x20" (pointer_expression "*(byte *)(iVar20 + 0x24)" * (cast_expression "(byte *)(iVar20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x24)" ( (binary_expression "iVar20 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }" { (if_statement "if (-1 < sVar17) goto LAB_0009d40b;" if (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) (goto_statement "goto LAB_0009d40b;" goto statement_identifier ;)) }) (else_clause "else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" else (if_statement "if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" if (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) (compound_statement "{\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" { (expression_statement "sVar17 = FUN_00025700();" (assignment_expression "sVar17 = FUN_00025700()" identifier = (call_expression "FUN_00025700()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;" statement_identifier : (expression_statement "piVar31[sVar17 + 1] = iVar21;" (assignment_expression "piVar31[sVar17 + 1] = iVar21" (subscript_expression "piVar31[sVar17 + 1]" identifier [ (binary_expression "sVar17 + 1" identifier + number_literal) ]) = identifier) ;)) })))) }) while (parenthesized_expression "(uVar32 - 1 != iVar21)" ( (binary_expression "uVar32 - 1 != iVar21" (binary_expression "uVar32 - 1" identifier - number_literal) != identifier) )) ;) })) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) })) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (if_statement "if (*param_5 == 0) goto LAB_0009c8ce;" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (goto_statement "goto LAB_0009c8ce;" goto statement_identifier ;)) }) (else_clause "else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" else (compound_statement "{\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" { (if_statement "if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" if (parenthesized_expression "(iVar9 != iVar41)" ( (binary_expression "iVar9 != iVar41" identifier != identifier) )) (compound_statement "{\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" { (expression_statement "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);" (assignment_expression "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 8)" * (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 0xc) + 8)" ( (binary_expression "*(int *)(local_158 + 0xc) + 8" (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" { (labeled_statement "LAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" statement_identifier : (if_statement "if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" if (parenthesized_expression "((*(byte *)(iVar20 + 0x37) & 3) != 2)" ( (binary_expression "(*(byte *)(iVar20 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar20 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar20 + 0x37) & 3" (pointer_expression "*(byte *)(iVar20 + 0x37)" * (cast_expression "(byte *)(iVar20 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x37)" ( (binary_expression "iVar20 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0009c960;" goto statement_identifier ;))) (expression_statement "iVar34 = FUN_00025510();" (assignment_expression "iVar34 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" if (parenthesized_expression "(*(short *)(iVar20 + 0x32) == 0)" ( (binary_expression "*(short *)(iVar20 + 0x32) == 0" (pointer_expression "*(short *)(iVar20 + 0x32)" * (cast_expression "(short *)(iVar20 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x32)" ( (binary_expression "iVar20 + 0x32" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  uVar35 = 0;\n                }" { (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" else (compound_statement "{\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" { (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);" do (compound_statement "{\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  }" { (expression_statement "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" * (cast_expression "(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar20 + 4) + iVar21 * 2)" ( (binary_expression "*(int *)(iVar20 + 4) + iVar21 * 2" (pointer_expression "*(int *)(iVar20 + 4)" * (cast_expression "(int *)(iVar20 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 4)" ( (binary_expression "iVar20 + 4" identifier + number_literal) )))) + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" if (parenthesized_expression "(*(ushort *)(local_158 + 0x34) == 0)" ( (binary_expression "*(ushort *)(local_158 + 0x34) == 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }" { (labeled_statement "LAB_0009c9d1:\n                      uVar35 = 0xffffffff;" statement_identifier : (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" else (compound_statement "{\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" { (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) (if_statement "if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" if (parenthesized_expression "(sVar17 != **(short **)(local_158 + 4))" ( (binary_expression "sVar17 != **(short **)(local_158 + 4)" identifier != (pointer_expression "**(short **)(local_158 + 4)" * (pointer_expression "*(short **)(local_158 + 4)" * (cast_expression "(short **)(local_158 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))))) )) (compound_statement "{\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" { (do_statement "do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);" do (compound_statement "{\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        }" { (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" identifier = (binary_expression "uVar35 + 1" identifier + number_literal)) ;) (if_statement "if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;" if (parenthesized_expression "(uVar35 == *(ushort *)(local_158 + 0x34))" ( (binary_expression "uVar35 == *(ushort *)(local_158 + 0x34)" identifier == (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0009c9d1;" goto statement_identifier ;)) }) while (parenthesized_expression "(sVar17 != (*(short **)(local_158 + 4))[uVar35])" ( (binary_expression "sVar17 != (*(short **)(local_158 + 4))[uVar35]" identifier != (subscript_expression "(*(short **)(local_158 + 4))[uVar35]" (parenthesized_expression "(*(short **)(local_158 + 4))" ( (pointer_expression "*(short **)(local_158 + 4)" * (cast_expression "(short **)(local_158 + 4)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) )) [ identifier ])) )) ;) (expression_statement "uVar35 = (uint)(short)uVar35;" (assignment_expression "uVar35 = (uint)(short)uVar35" identifier = (cast_expression "(uint)(short)uVar35" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar35" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "iVar22 = iVar34 + iVar21;" (assignment_expression "iVar22 = iVar34 + iVar21" identifier = (binary_expression "iVar34 + iVar21" identifier + identifier)) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000493f0(uVar35,iVar22);" (call_expression "FUN_000493f0(uVar35,iVar22)" identifier (argument_list "(uVar35,iVar22)" ( identifier , identifier ))) ;) (expression_statement "uVar35 = (uint)*(ushort *)(iVar20 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar20 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar20 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar20 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x32)" ( (binary_expression "iVar20 + 0x32" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar21 < (int)uVar35)" ( (binary_expression "iVar21 < (int)uVar35" identifier < (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (expression_statement "FUN_00068470(iVar40,iVar34,uVar35);" (call_expression "FUN_00068470(iVar40,iVar34,uVar35)" identifier (argument_list "(iVar40,iVar34,uVar35)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0009ca27;" goto statement_identifier ;) })) (labeled_statement "LAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();" statement_identifier : (expression_statement "pcVar12 = (code *)invalidInstructionException();" (assignment_expression "pcVar12 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" statement_identifier : (if_statement "if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" { (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" if (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" * (cast_expression "(byte *)(param_3 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" { (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (goto_statement "goto LAB_0009c049;" goto statement_identifier ;) })) (labeled_statement "LAB_0009c8ce:\n              bVar48 = false;" statement_identifier : (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;)) (goto_statement "goto LAB_0009c1d7;" goto statement_identifier ;) }))) }))) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) }) (else_clause "else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" else (compound_statement "{\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" { (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" identifier = true) ;) (labeled_statement "LAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" statement_identifier : (if_statement "if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" { (labeled_statement "LAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);" statement_identifier : (expression_statement "iVar20 = *(int *)(local_158 + 0x28);" (assignment_expression "iVar20 = *(int *)(local_158 + 0x28)" identifier = (pointer_expression "*(int *)(local_158 + 0x28)" * (cast_expression "(int *)(local_158 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x28)" ( (binary_expression "local_158 + 0x28" identifier + number_literal) ))))) ;)) (if_statement "if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" if (parenthesized_expression "((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0))" ( (binary_expression "(iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)" (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(byte *)(local_158 + 0x38) & 4) != 0)" ( (binary_expression "(*(byte *)(local_158 + 0x38) & 4) != 0" (parenthesized_expression "(*(byte *)(local_158 + 0x38) & 4)" ( (binary_expression "*(byte *)(local_158 + 0x38) & 4" (pointer_expression "*(byte *)(local_158 + 0x38)" * (cast_expression "(byte *)(local_158 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x38)" ( (binary_expression "local_158 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" { (expression_statement "iVar34 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar34 = *(int *)(local_158 + 0xc)" identifier = (pointer_expression "*(int *)(local_158 + 0xc)" * (cast_expression "(int *)(local_158 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0xc)" ( (binary_expression "local_158 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) (do_statement "do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);" do (compound_statement "{\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              }" { (expression_statement "*(undefined4 *)((int)local_f0 + uVar35) = 0;" (assignment_expression "*(undefined4 *)((int)local_f0 + uVar35) = 0" (pointer_expression "*(undefined4 *)((int)local_f0 + uVar35)" * (cast_expression "(undefined4 *)((int)local_f0 + uVar35)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_f0 + uVar35)" ( (binary_expression "(int)local_f0 + uVar35" (cast_expression "(int)local_f0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar35 = uVar35 + 4;" (assignment_expression "uVar35 = uVar35 + 4" identifier = (binary_expression "uVar35 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar35 < 0x18)" ( (binary_expression "uVar35 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_d8 = &local_d4;" (assignment_expression "local_d8 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (expression_statement "local_bc = *(undefined4 *)*param_3;" (assignment_expression "local_bc = *(undefined4 *)*param_3" identifier = (pointer_expression "*(undefined4 *)*param_3" * (cast_expression "(undefined4 *)*param_3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" identifier = (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = iVar9;" (assignment_expression "local_d0 = iVar9" identifier = identifier) ;) (expression_statement "local_cc = iVar41;" (assignment_expression "local_cc = iVar41" identifier = identifier) ;) (expression_statement "local_c0 = param_3;" (assignment_expression "local_c0 = param_3" identifier = identifier) ;) (if_statement "if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" if (parenthesized_expression "(*(ushort *)(local_158 + 0x34) != 0)" ( (binary_expression "*(ushort *)(local_158 + 0x34) != 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" { (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);" do (compound_statement "{\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                }" { (expression_statement "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" identifier = (pointer_expression "*(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" * (cast_expression "(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_158 + 4) + iVar21 * 2)" ( (binary_expression "*(int *)(local_158 + 4) + iVar21 * 2" (pointer_expression "*(int *)(local_158 + 4)" * (cast_expression "(int *)(local_158 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 4)" ( (binary_expression "local_158 + 4" identifier + number_literal) )))) + (binary_expression "iVar21 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar22 = (int)sVar17;" (assignment_expression "iVar22 = (int)sVar17" identifier = (cast_expression "(int)sVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" if (parenthesized_expression "(sVar17 == -2)" ( (binary_expression "sVar17 == -2" identifier == number_literal) )) (compound_statement "{\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }" { (expression_statement "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);" (assignment_expression "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10)" identifier = (pointer_expression "*(int *)(iVar20 + 4 + iVar21 * 0x10)" * (cast_expression "(int *)(iVar20 + 4 + iVar21 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 4 + iVar21 * 0x10)" ( (binary_expression "iVar20 + 4 + iVar21 * 0x10" (binary_expression "iVar20 + 4" identifier + number_literal) + (binary_expression "iVar21 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "local_a4 = CONCAT22(local_a4._2_2_,1);" (assignment_expression "local_a4 = CONCAT22(local_a4._2_2_,1)" identifier = (call_expression "CONCAT22(local_a4._2_2_,1)" identifier (argument_list "(local_a4._2_2_,1)" ( (field_expression "local_a4._2_2_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_a0 = (int *)0x0;" (assignment_expression "local_a0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0 = FUN_0001fe20;" (assignment_expression "local_b0 = FUN_0001fe20" identifier = identifier) ;) (expression_statement "local_b4 = FUN_0002a790;" (assignment_expression "local_b4 = FUN_0002a790" identifier = identifier) ;) (if_statement "if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" if (parenthesized_expression "((short)local_a4 == 0)" ( (binary_expression "(short)local_a4 == 0" (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) == number_literal) )) (compound_statement "{\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" { (expression_statement "pcVar12 = FUN_00061900;" (assignment_expression "pcVar12 = FUN_00061900" identifier = identifier) ;) (expression_statement "iVar22 = local_c4;" (assignment_expression "iVar22 = local_c4" identifier = identifier) ;) (goto_statement "goto LAB_0009c17b;" goto statement_identifier ;) })) (goto_statement "goto LAB_0009c1b2;" goto statement_identifier ;) })) }) (else_clause "else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" else (if_statement "if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" if (parenthesized_expression "((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0))" ( (binary_expression "(-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" (parenthesized_expression "(-1 < sVar17)" ( (binary_expression "-1 < sVar17" number_literal < identifier) )) && (parenthesized_expression "(iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" ( (comma_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0" (assignment_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14" identifier = (binary_expression "*(int *)(iVar34 + 4) + iVar22 * 0x14" (pointer_expression "*(int *)(iVar34 + 4)" * (cast_expression "(int *)(iVar34 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 4)" ( (binary_expression "iVar34 + 4" identifier + number_literal) )))) + (binary_expression "iVar22 * 0x14" identifier * number_literal))) , (binary_expression "(*(byte *)(iVar43 + 0x10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar43 + 0x10) & 0x20)" ( (binary_expression "*(byte *)(iVar43 + 0x10) & 0x20" (pointer_expression "*(byte *)(iVar43 + 0x10)" * (cast_expression "(byte *)(iVar43 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 0x10)" ( (binary_expression "iVar43 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" { (expression_statement "iVar43 = *(int *)(iVar43 + 8);" (assignment_expression "iVar43 = *(int *)(iVar43 + 8)" identifier = (pointer_expression "*(int *)(iVar43 + 8)" * (cast_expression "(int *)(iVar43 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 8)" ( (binary_expression "iVar43 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = FUN_00032b10;" (assignment_expression "pcVar12 = FUN_00032b10" identifier = identifier) ;) (if_statement "if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" if (parenthesized_expression "(iVar43 != 0)" ( (binary_expression "iVar43 != 0" identifier != number_literal) )) (compound_statement "{\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );" do (compound_statement "{\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      }" { (expression_statement "uVar35 = (uint)*(byte *)(iVar43 + iVar27);" (assignment_expression "uVar35 = (uint)*(byte *)(iVar43 + iVar27)" identifier = (binary_expression "(uint)*(byte *)(iVar43 + iVar27)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar43 + iVar27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + iVar27)" ( (binary_expression "iVar43 + iVar27" identifier + identifier) ))))) ;) (if_statement "if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" if (parenthesized_expression "(uVar35 == (byte)"BINARY"[iVar27])" ( (binary_expression "uVar35 == (byte)"BINARY"[iVar27]" identifier == (cast_expression "(byte)"BINARY"[iVar27]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" " string_content ") [ identifier ]))) )) (compound_statement "{\n                          if (uVar35 == 0) break;\n                        }" { (if_statement "if (uVar35 == 0) break;" if (parenthesized_expression "(uVar35 == 0)" ( (binary_expression "uVar35 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" else (if_statement "if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" if (parenthesized_expression "((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])" ( (binary_expression "(&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (subscript_expression "(&DAT_000dc6c0)[uVar35]" (parenthesized_expression "(&DAT_000dc6c0)" ( (pointer_expression "&DAT_000dc6c0" & identifier) )) [ identifier ]) != (subscript_expression "(&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (parenthesized_expression "(&DAT_000dc6c0)" ( (pointer_expression "&DAT_000dc6c0" & identifier) )) [ (cast_expression "(byte)"BINARY"[iVar27]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" " string_content ") [ identifier ])) ])) )) (goto_statement "goto LAB_0009c1bb;" goto statement_identifier ;)))) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0009c17b:\n                    local_c4 = iVar22;" statement_identifier : (expression_statement "local_c4 = iVar22;" (assignment_expression "local_c4 = iVar22" identifier = identifier) ;)) (expression_statement "local_f0[1] = pcVar12;" (assignment_expression "local_f0[1] = pcVar12" (subscript_expression "local_f0[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_c8 = iVar21;" (assignment_expression "local_c8 = iVar21" identifier = identifier) ;) (if_statement "if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }" if (parenthesized_expression "(param_3[4] != 0)" ( (binary_expression "param_3[4] != 0" (subscript_expression "param_3[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                      FUN_0004c8d0();\n                    }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);" statement_identifier : (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" identifier = (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_158 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x34)" ( (binary_expression "local_158 + 0x34" identifier + number_literal) ))))) ;)) })))) (labeled_statement "LAB_0009c1bb:\n                  iVar21 = iVar21 + 1;" statement_identifier : (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar21 < (int)local_17c)" ( (binary_expression "iVar21 < (int)local_17c" identifier < (cast_expression "(int)local_17c" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) })) (labeled_statement "LAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" statement_identifier : (if_statement "if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" if (parenthesized_expression "(*(int *)(local_158 + 0x24) != 0)" ( (binary_expression "*(int *)(local_158 + 0x24) != 0" (pointer_expression "*(int *)(local_158 + 0x24)" * (cast_expression "(int *)(local_158 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_158 + 0x24)" ( (binary_expression "local_158 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00062f10();\n            }" { (expression_statement "FUN_00062f10();" (call_expression "FUN_00062f10()" identifier (argument_list "()" ( ))) ;) }))) }))) }))) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar42 + 0x24)" * (cast_expression "(uint *)(iVar42 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x24)" ( (binary_expression "iVar42 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" if (parenthesized_expression "((uVar35 & 0x1000) == 0)" ( (binary_expression "(uVar35 & 0x1000) == 0" (parenthesized_expression "(uVar35 & 0x1000)" ( (binary_expression "uVar35 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }" { (expression_statement "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';" (assignment_expression "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04'" (pointer_expression "*(char *)((int)param_5 + 0x35)" * (cast_expression "(char *)((int)param_5 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uVar33 == 0) + '\x04'" (parenthesized_expression "(uVar33 == 0)" ( (binary_expression "uVar33 == 0" identifier == number_literal) )) + (char_literal "'\x04'" ' escape_sequence '))) ;) }) (else_clause "else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" else (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))) (expression_statement "param_5[0xe] = iVar41;" (assignment_expression "param_5[0xe] = iVar41" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;" (assignment_expression "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1" (pointer_expression "*(byte *)((int)param_5 + 0x36)" * (cast_expression "(byte *)((int)param_5 + 0x36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x36)" ( (binary_expression "(int)param_5 + 0x36" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(uVar35 >> 0x10) & 1" (call_expression "(byte)(uVar35 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar35 >> 0x10)" ( (binary_expression "uVar35 >> 0x10" identifier >> number_literal) ))) & number_literal)) ;) (if_statement "if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" if (parenthesized_expression "((uVar35 & 0xf) == 0)" ( (binary_expression "(uVar35 & 0xf) == 0" (parenthesized_expression "(uVar35 & 0xf)" ( (binary_expression "uVar35 & 0xf" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" { (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" * (cast_expression "(undefined1 *)((int)param_5 + 0x37)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x37)" ( (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (if_statement "if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "(!bVar48)" ( (unary_expression "!bVar48" ! identifier) )) (compound_statement "{\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" { (expression_statement "local_194 = (uint *)0x1;" (assignment_expression "local_194 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" else (compound_statement "{\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" { (expression_statement "iVar41 = **(int **)(iVar42 + 0x30);" (assignment_expression "iVar41 = **(int **)(iVar42 + 0x30)" identifier = (pointer_expression "**(int **)(iVar42 + 0x30)" * (pointer_expression "*(int **)(iVar42 + 0x30)" * (cast_expression "(int **)(iVar42 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar42 = FUN_0009a2d0(0,uVar33,iVar20);" (assignment_expression "iVar42 = FUN_0009a2d0(0,uVar33,iVar20)" identifier = (call_expression "FUN_0009a2d0(0,uVar33,iVar20)" identifier (argument_list "(0,uVar33,iVar20)" ( number_literal , identifier , identifier )))) ;) (if_statement "if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }" if (parenthesized_expression "((iVar20 != iVar42) && (iVar20 != 0))" ( (binary_expression "(iVar20 != iVar42) && (iVar20 != 0)" (parenthesized_expression "(iVar20 != iVar42)" ( (binary_expression "iVar20 != iVar42" identifier != identifier) )) && (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) ))) )) (compound_statement "{\n          FUN_000254e0();\n        }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000493f0(param_5[4],iVar42);" (call_expression "FUN_000493f0(param_5[4],iVar42)" identifier (argument_list "(param_5[4],iVar42)" ( (subscript_expression "param_5[4]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" if (parenthesized_expression "((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0)" ( (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14])" ( (binary_expression "*(uint *)(iVar41 + 0x2c) & param_5[0x14]" (pointer_expression "*(uint *)(iVar41 + 0x2c)" * (cast_expression "(uint *)(iVar41 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x2c)" ( (binary_expression "iVar41 + 0x2c" identifier + number_literal) )))) & (subscript_expression "param_5[0x14]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13])" ( (binary_expression "*(uint *)(iVar41 + 0x28) & param_5[0x13]" (pointer_expression "*(uint *)(iVar41 + 0x28)" * (cast_expression "(uint *)(iVar41 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x28)" ( (binary_expression "iVar41 + 0x28" identifier + number_literal) )))) & (subscript_expression "param_5[0x13]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" { (expression_statement "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;" (assignment_expression "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" * (cast_expression "(ushort *)(iVar41 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 10)" ( (binary_expression "iVar41 + 10" identifier + number_literal) )))) = (binary_expression "*(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" * (cast_expression "(ushort *)(iVar41 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 10)" ( (binary_expression "iVar41 + 10" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009b1f0;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" else (compound_statement "{\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" { (expression_statement "uVar35 = (uint)*(ushort *)(iVar42 + 0x28);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar42 + 0x28)" identifier = (binary_expression "(uint)*(ushort *)(iVar42 + 0x28)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar42 + 0x28)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x28)" ( (binary_expression "iVar42 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = FUN_00025510();" (assignment_expression "iVar20 = FUN_00025510()" identifier = (call_expression "FUN_00025510()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_154 = param_5[3];" (assignment_expression "local_154 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (if_statement "if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" if (parenthesized_expression "(uVar35 != 0)" ( (binary_expression "uVar35 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" { (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);" do (compound_statement "{\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        }" { (while_statement "while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" { (expression_statement "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);" (assignment_expression "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" * (cast_expression "(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar45 * 4)" ( (binary_expression "*(int *)(iVar42 + 0x30) + uVar45 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar45 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar34 != 0) break;" if (parenthesized_expression "(iVar34 != 0)" ( (binary_expression "iVar34 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0009af14:\n            uVar45 = uVar45 + 1;" statement_identifier : (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" identifier = (binary_expression "uVar45 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar35 == uVar45) goto LAB_0009af4f;" if (parenthesized_expression "(uVar35 == uVar45)" ( (binary_expression "uVar35 == uVar45" identifier == identifier) )) (goto_statement "goto LAB_0009af4f;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" if (parenthesized_expression "((*(byte *)(iVar34 + 0xc) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar34 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0xc) & 1)" ( (binary_expression "*(byte *)(iVar34 + 0xc) & 1" (pointer_expression "*(byte *)(iVar34 + 0xc)" * (cast_expression "(byte *)(iVar34 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0xc)" ( (binary_expression "iVar34 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" { (expression_statement "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);" (call_expression "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45)" identifier (argument_list "(uVar45,uVar33,iVar20 + 2 + uVar45)" ( identifier , identifier , (binary_expression "iVar20 + 2 + uVar45" (binary_expression "iVar20 + 2" identifier + number_literal) + identifier) ))) ;) (expression_statement "local_154 = param_5[4];" (assignment_expression "local_154 = param_5[4]" identifier = (subscript_expression "param_5[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0009af14;" goto statement_identifier ;) })) (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" identifier = (binary_expression "uVar45 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) while (parenthesized_expression "(uVar35 != uVar45)" ( (binary_expression "uVar35 != uVar45" identifier != identifier) )) ;) })) (labeled_statement "LAB_0009af4f:\n      FUN_00049630(iVar20);" statement_identifier : (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier ))) ;)) (expression_statement "FUN_00049630(iVar20 + 1);" (call_expression "FUN_00049630(iVar20 + 1)" identifier (argument_list "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) ))) ;) (expression_statement "cVar15 = *(char *)(iVar42 + 0x1c);" (assignment_expression "cVar15 = *(char *)(iVar42 + 0x1c)" identifier = (pointer_expression "*(char *)(iVar42 + 0x1c)" * (cast_expression "(char *)(iVar42 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "FUN_000493f0(local_154,iVar20);" (call_expression "FUN_000493f0(local_154,iVar20)" identifier (argument_list "(local_154,iVar20)" ( identifier , identifier ))) ;) (expression_statement "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);" (call_expression "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9)" identifier (argument_list "(-(uint)(cVar15 == '\0') | 0xfffffff9)" ( (binary_expression "-(uint)(cVar15 == '\0') | 0xfffffff9" (unary_expression "-(uint)(cVar15 == '\0')" - (call_expression "(uint)(cVar15 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(cVar15 == '\0')" ( (binary_expression "cVar15 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) | number_literal) ))) ;) (expression_statement "*(undefined1 *)(iVar42 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(iVar42 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(iVar42 + 0x1c)" * (cast_expression "(undefined1 *)(iVar42 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1c)" ( (binary_expression "iVar42 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ;) (expression_statement "iVar34 = uVar35 * 4;" (assignment_expression "iVar34 = uVar35 * 4" identifier = (binary_expression "uVar35 * 4" identifier * number_literal)) ;) (expression_statement "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;" (assignment_expression "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (pointer_expression "*(byte *)((int)param_5 + 0x35)" * (cast_expression "(byte *)((int)param_5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (parenthesized_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U)" ( (binary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U" (unary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0')" - (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\0')" ( (binary_expression "*(char *)((int)param_3 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" * (cast_expression "(char *)((int)param_3 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x2e)" ( (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) & number_literal) )) + number_literal)) ;) (expression_statement "local_184 = param_5[0x10];" (assignment_expression "local_184 = param_5[0x10]" identifier = (subscript_expression "param_5[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (for_statement "for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" for ( ; (binary_expression "uVar35 != 0xffffffff" identifier != number_literal) ; (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ) (compound_statement "{\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" { (while_statement "while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" while (parenthesized_expression "(piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0)" ( (comma_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34)" identifier = (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + iVar34)" * (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + iVar34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar42 + 0x30) + iVar34)" ( (binary_expression "*(int *)(iVar42 + 0x30) + iVar34" (pointer_expression "*(int *)(iVar42 + 0x30)" * (cast_expression "(int *)(iVar42 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x30)" ( (binary_expression "iVar42 + 0x30" identifier + number_literal) )))) + identifier) ))))) , (binary_expression "(*(byte *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(piVar31 + 3) & 1)" ( (binary_expression "*(byte *)(piVar31 + 3) & 1" (pointer_expression "*(byte *)(piVar31 + 3)" * (cast_expression "(byte *)(piVar31 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal)) )) (compound_statement "{\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" { (expression_statement "local_184 = local_184 + -1;" (assignment_expression "local_184 = local_184 + -1" identifier = (binary_expression "local_184 + -1" identifier + number_literal)) ;) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;" if (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" ( (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" ( (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" ( (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" * (cast_expression "(ushort *)(iVar42 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1e)" ( (binary_expression "iVar42 + 0x1e" identifier + number_literal) )))) >> (parenthesized_expression "(uVar35 & 0x1f)" ( (binary_expression "uVar35 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b18a;" goto statement_identifier ;)) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0xc);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0xc)" identifier = (pointer_expression "*(char **)(*piVar31 + 0xc)" * (cast_expression "(char **)(*piVar31 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar31 + 0xc)" ( (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" if (parenthesized_expression "(cVar15 == -0x53)" ( (binary_expression "cVar15 == -0x53" identifier == number_literal) )) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" { (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" identifier = (subscript_expression "pcVar10[2]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" if (parenthesized_expression "(cVar15 != -0x52)" ( (binary_expression "cVar15 != -0x52" identifier != number_literal) )) (compound_statement "{\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" { (if_statement "if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" if (parenthesized_expression "(cVar15 == -0x78)" ( (binary_expression "cVar15 == -0x78" identifier == number_literal) )) (compound_statement "{\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" { (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" identifier = (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" * (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" * (cast_expression "(int *)(pcVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))) + number_literal) )))))) ;) (goto_statement "goto LAB_0009bc51;" goto statement_identifier ;) })) (labeled_statement "LAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" statement_identifier : (if_statement "if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" if (parenthesized_expression "(*(char *)(iVar41 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar41 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" * (cast_expression "(char *)(iVar41 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar41 + 0x4d)" ( (binary_expression "iVar41 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" { (expression_statement "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);" (assignment_expression "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4)" identifier = (pointer_expression "*(int *)(local_184 * 0x14 + param_5[0x11] + 4)" * (cast_expression "(int *)(local_184 * 0x14 + param_5[0x11] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_184 * 0x14 + param_5[0x11] + 4)" ( (binary_expression "local_184 * 0x14 + param_5[0x11] + 4" (binary_expression "local_184 * 0x14 + param_5[0x11]" (binary_expression "local_184 * 0x14" identifier * number_literal) + (subscript_expression "param_5[0x11]" identifier [ number_literal ])) + number_literal) ))))) ;) (if_statement "if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar21 = param_2[0x1a] + -1;\n              }" { (expression_statement "iVar21 = param_2[0x1a] + -1;" (assignment_expression "iVar21 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar21 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar21 * 0x14)" ( (binary_expression "param_2[0x19] + iVar21 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));" (call_expression "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" identifier (argument_list "(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" ( (pointer_expression "*(undefined4 *)(puVar26 + 8)" * (cast_expression "(undefined4 *)(puVar26 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(puVar26 + 0xc)" * (cast_expression "(undefined4 *)(puVar26 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0xc)" ( (binary_expression "puVar26 + 0xc" identifier + number_literal) )))) ))) ;) }))) (expression_statement "iVar21 = FUN_000556e0();" (assignment_expression "iVar21 = FUN_000556e0()" identifier = (call_expression "FUN_000556e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" { (expression_statement "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc)" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" * (cast_expression "(undefined4 *)(iVar21 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0xc)" ( (binary_expression "iVar21 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*piVar31 + 0xc)" * (cast_expression "(undefined4 *)(*piVar31 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar31 + 0xc)" ( (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" * identifier) + number_literal) ))))) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_b4 = (code *)0x0;" (assignment_expression "local_b4 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar22 = FUN_0002fd80();" (assignment_expression "iVar22 = FUN_0002fd80()" identifier = (call_expression "FUN_0002fd80()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar21 + 0x10) = iVar22;" (assignment_expression "*(int *)(iVar21 + 0x10) = iVar22" (pointer_expression "*(int *)(iVar21 + 0x10)" * (cast_expression "(int *)(iVar21 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x10)" ( (binary_expression "iVar21 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" { (expression_statement "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;" (assignment_expression "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35" (pointer_expression "*(uint *)(iVar22 + 0x1c)" * (cast_expression "(uint *)(iVar22 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + 0x1c)" ( (binary_expression "iVar22 + 0x1c" identifier + number_literal) )))) = (binary_expression "iVar20 + 2 + uVar35" (binary_expression "iVar20 + 2" identifier + number_literal) + identifier)) ;) (expression_statement "FUN_00092bc0(param_1,iVar21,param_5[6],0x10);" (call_expression "FUN_00092bc0(param_1,iVar21,param_5[6],0x10)" identifier (argument_list "(param_1,iVar21,param_5[6],0x10)" ( identifier , identifier , (subscript_expression "param_5[6]" identifier [ number_literal ]) , number_literal ))) ;) })) (expression_statement "*(undefined4 *)(iVar21 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" * (cast_expression "(undefined4 *)(iVar21 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0xc)" ( (binary_expression "iVar21 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0009b15d;" goto statement_identifier ;) })) (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" identifier = (pointer_expression "**(int **)(pcVar10 + 0x14)" * (pointer_expression "*(int **)(pcVar10 + 0x14)" * (cast_expression "(int **)(pcVar10 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x14)" ( (binary_expression "pcVar10 + 0x14" identifier + number_literal) )))))) ;) (labeled_statement "LAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;" statement_identifier : (if_statement "if (iVar21 == 1) goto LAB_0009b066;" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0009b066;" goto statement_identifier ;))) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" identifier = (binary_expression "uVar35 - 1" identifier - number_literal)) ;) (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" identifier = (binary_expression "iVar34 + -4" identifier + number_literal)) ;) (if_statement "if (uVar35 == 0xffffffff) goto LAB_0009b1e0;" if (parenthesized_expression "(uVar35 == 0xffffffff)" ( (binary_expression "uVar35 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0009b1e0;" goto statement_identifier ;)) })) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }" if (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" ( (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" ( (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" ( (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" ( (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" * (cast_expression "(ushort *)(iVar42 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0x1e)" ( (binary_expression "iVar42 + 0x1e" identifier + number_literal) )))) >> (parenthesized_expression "(uVar35 & 0x1f)" ( (binary_expression "uVar35 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0009b18a:\n          FUN_00020250();\n        }" { (labeled_statement "LAB_0009b18a:\n          FUN_00020250();" statement_identifier : (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" identifier (argument_list "()" ( ))) ;)) })) (labeled_statement "LAB_0009b15d:\n        iVar34 = iVar34 + -4;" statement_identifier : (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" identifier = (binary_expression "iVar34 + -4" identifier + number_literal)) ;)) })) }))) (labeled_statement "LAB_0009b1e0:\n    local_158 = 0;" statement_identifier : (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;)) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" else (compound_statement "{\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" { (expression_statement "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));" (call_expression "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20))" identifier (argument_list "(0,*(undefined4 *)(iVar34 + 0x20))" ( number_literal , (pointer_expression "*(undefined4 *)(iVar34 + 0x20)" * (cast_expression "(undefined4 *)(iVar34 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x20)" ( (binary_expression "iVar34 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "iVar41 = FUN_00049630(iVar20);" (assignment_expression "iVar41 = FUN_00049630(iVar20)" identifier = (call_expression "FUN_00049630(iVar20)" identifier (argument_list "(iVar20)" ( identifier )))) ;) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xb;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xb" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" * (cast_expression "(undefined1 *)((int)param_5 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x35)" ( (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" identifier = (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" statement_identifier : (do_statement "do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" do (compound_statement "{\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  }" { (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" identifier = (cast_expression "(int *)param_3[0x17]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (if_statement "if (iVar41 < 1) goto LAB_0009b538;" if (parenthesized_expression "(iVar41 < 1)" ( (binary_expression "iVar41 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0009b538;" goto statement_identifier ;)) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" do (compound_statement "{\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    }" { (while_statement "while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" while (parenthesized_expression "(uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0)" ( (comma_expression "uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" identifier = (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (comma_expression "uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar35 = local_17c" identifier = identifier) , (binary_expression "(uVar32 & 6) != 0" (parenthesized_expression "(uVar32 & 6)" ( (binary_expression "uVar32 & 6" identifier & number_literal) )) != number_literal))) )) (compound_statement "{\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" { (labeled_statement "LAB_0009b2d5:\n        local_17c = uVar35;" statement_identifier : (expression_statement "local_17c = uVar35;" (assignment_expression "local_17c = uVar35" identifier = identifier) ;)) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) (if_statement "if (iVar41 == 0) goto LAB_0009b30a;" if (parenthesized_expression "(iVar41 == 0)" ( (binary_expression "iVar41 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009b30a;" goto statement_identifier ;)) })) (if_statement "if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" if (parenthesized_expression "((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0)" ( (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0" (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0" (parenthesized_expression "(piVar31[0xb] & param_5[0x14])" ( (binary_expression "piVar31[0xb] & param_5[0x14]" (subscript_expression "piVar31[0xb]" identifier [ number_literal ]) & (subscript_expression "param_5[0x14]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(piVar31[10] & param_5[0x13]) == 0" (parenthesized_expression "(piVar31[10] & param_5[0x13])" ( (binary_expression "piVar31[10] & param_5[0x13]" (subscript_expression "piVar31[10]" identifier [ number_literal ]) & (subscript_expression "param_5[0x13]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" { (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (if_statement "if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;" if (parenthesized_expression "(((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0))" ( (binary_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)" (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0)" ( (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" ( (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" * (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" ( (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar42 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar42 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar42 + 4) & 1)" ( (binary_expression "*(byte *)(iVar42 + 4) & 1" (pointer_expression "*(byte *)(iVar42 + 4)" * (cast_expression "(byte *)(iVar42 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 4)" ( (binary_expression "iVar42 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;)) (if_statement "if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;" if (parenthesized_expression "(local_194 == (uint *)0x1)" ( (binary_expression "local_194 == (uint *)0x1" identifier == (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }" { (expression_statement "local_d0 = param_5[1];" (assignment_expression "local_d0 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)&local_b8 + uVar45) = 0;" (assignment_expression "*(undefined4 *)((int)&local_b8 + uVar45) = 0" (pointer_expression "*(undefined4 *)((int)&local_b8 + uVar45)" * (cast_expression "(undefined4 *)((int)&local_b8 + uVar45)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_b8 + uVar45)" ( (binary_expression "(int)&local_b8 + uVar45" (cast_expression "(int)&local_b8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b8" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "uVar45 = uVar45 + 4;" (assignment_expression "uVar45 = uVar45 + 4" identifier = (binary_expression "uVar45 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar45 < 0x18)" ( (binary_expression "uVar45 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_d4 = local_158;" (assignment_expression "local_d4 = local_158" identifier = identifier) ;) (expression_statement "local_b4 = FUN_00025680;" (assignment_expression "local_b4 = FUN_00025680" identifier = identifier) ;) (expression_statement "local_a0 = &local_d4;" (assignment_expression "local_a0 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (if_statement "if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" if (parenthesized_expression "(iVar42 != 0)" ( (binary_expression "iVar42 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" { (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" if (parenthesized_expression "((short)local_a4 != 0)" ( (binary_expression "(short)local_a4 != 0" (cast_expression "(short)local_a4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) != number_literal) )) (compound_statement "{\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" { (expression_statement "local_17c = 2;" (assignment_expression "local_17c = 2" identifier = number_literal) ;) (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" identifier = identifier) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) })) (expression_statement "uVar32 = *(ushort *)((int)piVar31 + 10);" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" identifier = (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" statement_identifier : (if_statement "if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" if (parenthesized_expression "((uVar32 & 0x1000) != 0)" ( (binary_expression "(uVar32 & 0x1000) != 0" (parenthesized_expression "(uVar32 & 0x1000)" ( (binary_expression "uVar32 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" { (expression_statement "uVar35 = 3;" (assignment_expression "uVar35 = 3" identifier = number_literal) ;) (if_statement "if (local_17c != 0) {\n              uVar35 = local_17c;\n            }" if (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) (compound_statement "{\n              uVar35 = local_17c;\n            }" { (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" identifier = identifier) ;) })) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) }))) }) (else_clause "else if (local_194 != (uint *)0x3) goto LAB_0009b594;" else (if_statement "if (local_194 != (uint *)0x3) goto LAB_0009b594;" if (parenthesized_expression "(local_194 != (uint *)0x3)" ( (binary_expression "local_194 != (uint *)0x3" identifier != (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0009b594;" goto statement_identifier ;)))) (if_statement "if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" if (parenthesized_expression "(((uVar32 & 0x200) == 0) || (param_5[0xb] == 0))" ( (binary_expression "((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)" (parenthesized_expression "((uVar32 & 0x200) == 0)" ( (binary_expression "(uVar32 & 0x200) == 0" (parenthesized_expression "(uVar32 & 0x200)" ( (binary_expression "uVar32 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_5[0xb] == 0)" ( (binary_expression "param_5[0xb] == 0" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }" { (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" identifier (argument_list "(param_1,iVar42,iVar40,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" else (compound_statement "{\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" { (expression_statement "iVar20 = FUN_00049630(0);" (assignment_expression "iVar20 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" identifier (argument_list "(param_1,iVar42,iVar40,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) (if_statement "if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" { (if_statement "if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar20 < 0)" ( (binary_expression "iVar20 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar20 = param_2[0x1a] + -1;\n            }" { (expression_statement "iVar20 = param_2[0x1a] + -1;" (assignment_expression "iVar20 = param_2[0x1a] + -1" identifier = (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" identifier = (pointer_expression "&DAT_001075d0" & identifier)) ;) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" if (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" * (cast_expression "(char *)(*param_2 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x4d)" ( (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" { (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14)" identifier = (cast_expression "(undefined1 *)(param_2[0x19] + iVar20 * 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x19] + iVar20 * 0x14)" ( (binary_expression "param_2[0x19] + iVar20 * 0x14" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" * (cast_expression "(int *)(puVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 8)" ( (binary_expression "puVar26 + 8" identifier + number_literal) )))) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) })) }))) (expression_statement "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" * (cast_expression "(ushort *)((int)piVar31 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_0009b2d5;" goto statement_identifier ;) })) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" * (cast_expression "(byte *)(param_3 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_0009b30a:\n    local_194 = (uint *)local_17c;" statement_identifier : (expression_statement "local_194 = (uint *)local_17c;" (assignment_expression "local_194 = (uint *)local_17c" identifier = (cast_expression "(uint *)local_17c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }) while (parenthesized_expression "(local_17c != 0)" ( (binary_expression "local_17c != 0" identifier != number_literal) )) ;)) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" identifier = (cast_expression "(int *)param_3[0x17]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (if_statement "if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" if (parenthesized_expression "(0 < iVar41)" ( (binary_expression "0 < iVar41" number_literal < identifier) )) (compound_statement "{\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" { (do_statement "do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" do (compound_statement "{\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    }" { (if_statement "if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))))" ( (binary_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" (parenthesized_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0))" ( (binary_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)" (parenthesized_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))" ( (binary_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)piVar31 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 10) & 6)" ( (binary_expression "*(byte *)((int)piVar31 + 10) & 6" (pointer_expression "*(byte *)((int)piVar31 + 10)" * (cast_expression "(byte *)((int)piVar31 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar31 + 10)" ( (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x82) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x82) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x82)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x82" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x800) != 0)" ( (binary_expression "(*(ushort *)(piVar31 + 3) & 0x800) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x800)" ( (binary_expression "*(ushort *)(piVar31 + 3) & 0x800" (pointer_expression "*(ushort *)(piVar31 + 3)" * (cast_expression "(ushort *)(piVar31 + 3)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar31 + 3)" ( (binary_expression "piVar31 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" ( (parenthesized_expression "(piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))" ( (binary_expression "piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" (binary_expression "piVar31[5] == iVar9" (subscript_expression "piVar31[5]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" ( (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" ( (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" * (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" ( (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" identifier * number_literal) + identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" { (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "local_70 = 0x83;" (assignment_expression "local_70 = 0x83" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0x100;" (assignment_expression "local_74 = 0x100" identifier = number_literal) ;) (expression_statement "local_72 = 1;" (assignment_expression "local_72 = 1" identifier = number_literal) ;) (expression_statement "local_84 = piVar1;" (assignment_expression "local_84 = piVar1" identifier = identifier) ;) (expression_statement "local_80 = piVar1;" (assignment_expression "local_80 = piVar1" identifier = identifier) ;) (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;) (if_statement "if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" if (parenthesized_expression "(piVar31[7] != -2)" ( (binary_expression "piVar31[7] != -2" (subscript_expression "piVar31[7]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" { (expression_statement "local_3c = (undefined2)piVar31[7];" (assignment_expression "local_3c = (undefined2)piVar31[7]" identifier = (cast_expression "(undefined2)piVar31[7]" ( (type_descriptor "undefined2" type_identifier) ) (subscript_expression "piVar31[7]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" identifier = (cast_expression "(undefined4 *)FUN_00061a10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00061a10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" if (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" { (expression_statement "puVar39 = (undefined4 *)0x0;" (assignment_expression "puVar39 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);" do (compound_statement "{\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            }" { (if_statement "if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" if (parenthesized_expression "((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0)" ( (binary_expression "(param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0" (binary_expression "(param_7 & puVar23[9]) == 0" (parenthesized_expression "(param_7 & puVar23[9])" ( (binary_expression "param_7 & puVar23[9]" identifier & (subscript_expression "puVar23[9]" identifier [ number_literal ])) )) == number_literal) && (binary_expression "(param_6 & puVar23[8]) == 0" (parenthesized_expression "(param_6 & puVar23[8])" ( (binary_expression "param_6 & puVar23[8]" identifier & (subscript_expression "puVar23[8]" identifier [ number_literal ])) )) == number_literal)) )) (compound_statement "{\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" { (if_statement "if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;" if (parenthesized_expression "((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))" ( (binary_expression "(puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0)" (parenthesized_expression "(puVar23[9] == 0 && puVar23[8] == 0)" ( (binary_expression "puVar23[9] == 0 && puVar23[8] == 0" (binary_expression "puVar23[9] == 0" (subscript_expression "puVar23[9]" identifier [ number_literal ]) == number_literal) && (binary_expression "puVar23[8] == 0" (subscript_expression "puVar23[8]" identifier [ number_literal ]) == number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar23 + 3) & 0x82) != 0)" ( (binary_expression "(*(byte *)(puVar23 + 3) & 0x82) != 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 0x82)" ( (binary_expression "*(byte *)(puVar23 + 3) & 0x82" (pointer_expression "*(byte *)(puVar23 + 3)" * (cast_expression "(byte *)(puVar23 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 3)" ( (binary_expression "puVar23 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0009b454;" goto statement_identifier ;)) (if_statement "if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }" if (parenthesized_expression "(puVar39 == (undefined4 *)0x0)" ( (binary_expression "puVar39 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  puVar39 = puVar23;\n                }" { (expression_statement "puVar39 = puVar23;" (assignment_expression "puVar39 = puVar23" identifier = identifier) ;) })) })) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" identifier = (cast_expression "(undefined4 *)FUN_00061a10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00061a10()" identifier (argument_list "()" ( ))))) ;) }) while (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar23 = puVar39;" (assignment_expression "puVar23 = puVar39" identifier = identifier) ;) (if_statement "if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" if (parenthesized_expression "(puVar39 != (undefined4 *)0x0)" ( (binary_expression "puVar39 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" { (labeled_statement "LAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" statement_identifier : (if_statement "if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" if (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 ))" ( (binary_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 10) & 4) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 4)" ( (binary_expression "*(byte *)((int)puVar23 + 10) & 4" (pointer_expression "*(byte *)((int)puVar23 + 10)" * (cast_expression "(byte *)((int)puVar23 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" ( (parenthesized_expression "((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))" ( (binary_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2)" (parenthesized_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0))" ( (comma_expression "piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (assignment_expression "piVar24 = (int *)*puVar23" identifier = (cast_expression "(int *)*puVar23" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar23" * identifier))) , (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 1)" ( (binary_expression "*(byte *)(puVar23 + 3) & 1" (pointer_expression "*(byte *)(puVar23 + 3)" * (cast_expression "(byte *)(puVar23 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 3)" ( (binary_expression "puVar23 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)((int)piVar24 + 5) & 8) == 0)" ( (binary_expression "(*(byte *)((int)piVar24 + 5) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 5) & 8)" ( (binary_expression "*(byte *)((int)piVar24 + 5) & 8" (pointer_expression "*(byte *)((int)piVar24 + 5)" * (cast_expression "(byte *)((int)piVar24 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + 5)" ( (binary_expression "(int)piVar24 + 5" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )))) )) || (parenthesized_expression "(**(int **)(piVar24[5] + 0x1c) < 2)" ( (binary_expression "**(int **)(piVar24[5] + 0x1c) < 2" (pointer_expression "**(int **)(piVar24[5] + 0x1c)" * (pointer_expression "*(int **)(piVar24[5] + 0x1c)" * (cast_expression "(int **)(piVar24[5] + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar24[5] + 0x1c)" ( (binary_expression "piVar24[5] + 0x1c" (subscript_expression "piVar24[5]" identifier [ number_literal ]) + number_literal) ))))) < number_literal) ))) )) ))) )) (compound_statement "{\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" { (expression_statement "local_b8 = *piVar24;" (assignment_expression "local_b8 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "local_b4 = (code *)piVar24[1];" (assignment_expression "local_b4 = (code *)piVar24[1]" identifier = (cast_expression "(code *)piVar24[1]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[1]" identifier [ number_literal ]))) ;) (expression_statement "local_b0 = (code *)piVar24[2];" (assignment_expression "local_b0 = (code *)piVar24[2]" identifier = (cast_expression "(code *)piVar24[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[2]" identifier [ number_literal ]))) ;) (expression_statement "local_a8 = piVar24[4];" (assignment_expression "local_a8 = piVar24[4]" identifier = (subscript_expression "piVar24[4]" identifier [ number_literal ])) ;) (expression_statement "local_a4 = piVar24[5];" (assignment_expression "local_a4 = piVar24[5]" identifier = (subscript_expression "piVar24[5]" identifier [ number_literal ])) ;) (expression_statement "local_a0 = (int *)piVar24[6];" (assignment_expression "local_a0 = (int *)piVar24[6]" identifier = (cast_expression "(int *)piVar24[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[6]" identifier [ number_literal ]))) ;) (expression_statement "local_9c = piVar24[7];" (assignment_expression "local_9c = piVar24[7]" identifier = (subscript_expression "piVar24[7]" identifier [ number_literal ])) ;) (expression_statement "local_98 = piVar24[8];" (assignment_expression "local_98 = piVar24[8]" identifier = (subscript_expression "piVar24[8]" identifier [ number_literal ])) ;) (expression_statement "local_94 = piVar24[9];" (assignment_expression "local_94 = piVar24[9]" identifier = (subscript_expression "piVar24[9]" identifier [ number_literal ])) ;) (expression_statement "local_90 = piVar24[10];" (assignment_expression "local_90 = piVar24[10]" identifier = (subscript_expression "piVar24[10]" identifier [ number_literal ])) ;) (expression_statement "local_8c = piVar24[0xb];" (assignment_expression "local_8c = piVar24[0xb]" identifier = (subscript_expression "piVar24[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_88 = piVar24[0xc];" (assignment_expression "local_88 = piVar24[0xc]" identifier = (subscript_expression "piVar24[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_ac = *(undefined4 *)(iVar42 + 0xc);" (assignment_expression "local_ac = *(undefined4 *)(iVar42 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar42 + 0xc)" * (cast_expression "(undefined4 *)(iVar42 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 + 0xc)" ( (binary_expression "iVar42 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "FUN_00092bc0(param_1,&local_b8,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,&local_b8,iVar40,0x10)" identifier (argument_list "(param_1,&local_b8,iVar40,0x10)" ( identifier , (pointer_expression "&local_b8" & identifier) , identifier , number_literal ))) ;) }))) })) })) })) })) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" identifier = (binary_expression "piVar31 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" identifier = (binary_expression "iVar41 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar41 != 0)" ( (binary_expression "iVar41 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" statement_identifier : (if_statement "if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" if (parenthesized_expression "(*param_5 == 0)" ( (binary_expression "*param_5 == 0" (pointer_expression "*param_5" * identifier) == number_literal) )) (compound_statement "{\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }" { (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" else (compound_statement "{\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" { (expression_statement "param_5[7] = param_2[0x1a];" (assignment_expression "param_5[7] = param_2[0x1a]" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (subscript_expression "param_2[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(*param_5);" (call_expression "FUN_00049630(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) ))) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = (undefined4 *)param_3[0x17];" (assignment_expression "puVar23 = (undefined4 *)param_3[0x17]" identifier = (cast_expression "(undefined4 *)param_3[0x17]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[0x17]" identifier [ number_literal ]))) ;) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" if (parenthesized_expression "(0 < iVar41)" ( (binary_expression "0 < iVar41" number_literal < identifier) )) (compound_statement "{\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" { (expression_statement "iVar42 = 0;" (assignment_expression "iVar42 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);" do (compound_statement "{\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      }" { (if_statement "if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" if (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0))" ( (binary_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0)" ( (binary_expression "(*(byte *)((int)puVar23 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 6)" ( (binary_expression "*(byte *)((int)puVar23 + 10) & 6" (pointer_expression "*(byte *)((int)puVar23 + 10)" * (cast_expression "(byte *)((int)puVar23 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" ( (binary_expression "(puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0" (binary_expression "(puVar23[0xb] & param_7) == 0" (parenthesized_expression "(puVar23[0xb] & param_7)" ( (binary_expression "puVar23[0xb] & param_7" (subscript_expression "puVar23[0xb]" identifier [ number_literal ]) & identifier) )) == number_literal) && (binary_expression "(puVar23[10] & param_6) == 0" (parenthesized_expression "(puVar23[10] & param_6)" ( (binary_expression "puVar23[10] & param_6" (subscript_expression "puVar23[10]" identifier [ number_literal ]) & identifier) )) == number_literal)) ))) )) (compound_statement "{\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" { (expression_statement "FUN_00092bc0(param_1,*puVar23,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,*puVar23,iVar40,0x10)" identifier (argument_list "(param_1,*puVar23,iVar40,0x10)" ( identifier , (pointer_expression "*puVar23" * identifier) , identifier , number_literal ))) ;) (expression_statement "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;" (assignment_expression "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" * (cast_expression "(ushort *)((int)puVar23 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" * (cast_expression "(ushort *)((int)puVar23 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 10)" ( (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" identifier = (subscript_expression "param_5[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" identifier = (subscript_expression "param_5[0x14]" identifier [ number_literal ])) ;) })) (expression_statement "iVar42 = iVar42 + 1;" (assignment_expression "iVar42 = iVar42 + 1" identifier = (binary_expression "iVar42 + 1" identifier + number_literal)) ;) (expression_statement "puVar23 = puVar23 + 0xc;" (assignment_expression "puVar23 = puVar23 + 0xc" identifier = (binary_expression "puVar23 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar42 < iVar41)" ( (binary_expression "iVar42 < iVar41" identifier < identifier) )) ;) })) })))) (labeled_statement "LAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\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_000d1450();\n  }" { (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return CONCAT44(param_7,param_6);" return (call_expression "CONCAT44(param_7,param_6)" identifier (argument_list "(param_7,param_6)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);" statement_identifier : (expression_statement "iVar20 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar20 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar20 == 0) goto LAB_0009ca50;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0009ca50;" goto statement_identifier ;)) (goto_statement "goto LAB_0009c96b;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (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 (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (pointer_declarator * 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 (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 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (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 (subscript_expression IDENT [ LIT ]) == IDENT) )) (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 IDENT != (subscript_expression IDENT [ IDENT ])) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (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 IDENT & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) && (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 (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_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 + (binary_expression IDENT * LIT)) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (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 = (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression IDENT << (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression 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 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 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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (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 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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_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 (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 ]) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (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 (call_expression IDENT (argument_list ( ))) ;)) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto 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) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (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 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 = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (goto_statement goto 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) ;) (expression_statement (assignment_expression IDENT = 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_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 IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (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 IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 IDENT + 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 * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (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 IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (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)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) }))) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_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) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (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 + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * 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 = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + 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 { (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 { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (labeled_statement statement_identifier : (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 = LIT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (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 IDENT != IDENT) )) && (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 IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") ))) ;) (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 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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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) + (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 (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) || (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (binary_expression (binary_expression IDENT & LIT) | LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 ( 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 { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) == IDENT) )) (compound_statement { (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 (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto 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) )) (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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) = 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 LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (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 ( ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 ])) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != IDENT) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_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) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = IDENT) ;) }) while (parenthesized_expression ( (binary_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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 = (pointer_expression & 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 ])) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (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 ])) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (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 ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 [ LIT ]) = (binary_expression (binary_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) )))) + IDENT) )))) == (char_literal ' escape_sequence ')) ^ IDENT) | (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (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) ) (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 { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }) (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 (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) )))) + (binary_expression IDENT * LIT)) + LIT) )))) == (char_literal ' escape_sequence '))) ;) }))) })) }))) (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 * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) == (char_literal ' escape_sequence ')) )) == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (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 IDENT + LIT) )))) != IDENT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (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 IDENT + (binary_expression IDENT * LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (do_statement do (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) )))) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( 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 { (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 (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto 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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_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 ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' character ')) & (parenthesized_expression ( (binary_expression IDENT ^ LIT) ))) )))) ;) (break_statement break ;)) (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression (char_literal ' character ') < IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT ^ LIT) )))) ;) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (char_literal ' character ') < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )))) ;) (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 (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) + LIT) )) * LIT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 >> LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( 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) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (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 (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT - IDENT) ))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (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 * IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) + LIT) )) * LIT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 >> LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (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 IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) })) (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 (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 (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) == LIT) )) (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) )))) & LIT) )) != 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 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 (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 = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = BOOL) ;) (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 IDENT == 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 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) ))))) ;) (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 (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (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 { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;)) })))) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (do_statement do (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ IDENT ])) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (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 ( ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (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 (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 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 = 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 = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (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)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (string_literal " string_content ") [ IDENT ]))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) != (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (string_literal " string_content ") [ IDENT ])) ])) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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) ))))) ;)) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) })) (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) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }))) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) )))) = (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) + (char_literal ' escape_sequence '))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT)) ;) (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) ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , 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) ;) (if_statement if (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) )))) & (subscript_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) )))) & (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 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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) }))) }) (else_clause else (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 = (call_expression IDENT (argument_list ( )))) ;) (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 = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (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)) ))))) ;) (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 ;)) })) (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 (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( (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 (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )))) | 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) ;) (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (unary_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 ')) ))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (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) )))) + IDENT) ))))) , (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (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) )))))) ;) (goto_statement goto statement_identifier ;) })) (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 ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT + LIT) + 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 IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (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 ( 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & (subscript_expression IDENT [ LIT ])) )) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & (subscript_expression IDENT [ LIT ])) )) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + 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) ))) )) (goto_statement goto 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 IDENT = (subscript_expression IDENT [ 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 (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (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) ))))) ;) (labeled_statement statement_identifier : (if_statement if (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 ])) ;) })) }))) (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)) ;) (goto_statement goto statement_identifier ;) })) (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) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (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 (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 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 (subscript_expression IDENT [ LIT ]) == IDENT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + IDENT) + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (subscript_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) ))) )) (goto_statement goto 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 IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (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 ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) < LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , LIT ))) ;) }))) })) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) && (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)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , 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 (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 ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) })))) (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 (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (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 "undefined8 __regparm3\nFUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)\n\n{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" (type_identifier "undefined8") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0009a940(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" (identifier "FUN_0009a940") (parameter_list "(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,\n            uint param_7)" (( "(") (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 "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  short *psVar3;\n  byte bVar4;\n  undefined1 uVar5;\n  ushort uVar6;\n  ushort uVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  int *piVar11;\n  code *pcVar12;\n  bool bVar13;\n  char cVar14;\n  char cVar15;\n  byte bVar16;\n  short sVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  int *piVar24;\n  int iVar25;\n  undefined1 *puVar26;\n  int iVar27;\n  uint *puVar28;\n  uint *puVar29;\n  int iVar30;\n  int *piVar31;\n  ushort uVar32;\n  uint uVar33;\n  int iVar34;\n  uint uVar35;\n  byte *pbVar36;\n  uint uVar37;\n  uint uVar38;\n  undefined4 *puVar39;\n  int iVar40;\n  int iVar41;\n  int iVar42;\n  int iVar43;\n  uint *puVar44;\n  uint uVar45;\n  int iVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  uint *local_194;\n  int local_184;\n  uint local_17c;\n  int local_168;\n  int local_158;\n  uint local_154;\n  int local_144;\n  int local_140;\n  int local_13c;\n  int local_134;\n  int *local_12c;\n  int local_128;\n  int *local_120;\n  uint local_118;\n  code *local_f0 [6];\n  int *local_d8;\n  int local_d4;\n  int local_d0;\n  int local_cc;\n  int local_c8;\n  int local_c4;\n  int *local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  code *local_b4;\n  code *local_b0;\n  undefined4 local_ac;\n  int local_a8;\n  int local_a4;\n  int *local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int *local_84;\n  int *local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined2 local_74;\n  undefined1 local_72;\n  undefined4 local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined2 local_3c;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x9a949;\n  iVar41 = *param_1;\n  iVar42 = param_5[0x12];\n  uVar18 = (uint)*(byte *)(param_5 + 0xd);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = param_3 + 0x12;\n  iVar8 = param_3[1];\n  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);\n  uVar35 = param_7;\n  uVar45 = param_6;\n  if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }\nLAB_0009a9fc:\n  param_5[0x14] = uVar35;\n  param_5[0x13] = uVar45;\n  uVar35 = param_3[0x11];\n  uVar45 = param_3[0x10];\n  iVar20 = param_1[0xe] + -1;\n  param_1[0xe] = iVar20;\n  param_5[4] = iVar20;\n  param_5[3] = iVar20;\n  iVar40 = param_1[0xe] + -1;\n  param_1[0xe] = iVar40;\n  param_5[6] = iVar40;\n  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }\n  if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }\n  iVar34 = uVar18 * 0x44 + iVar8;\n  bVar4 = *(byte *)(iVar34 + 0x2d);\n  if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\nLAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);\n  iVar41 = param_3[0x15];\n  piVar31 = (int *)param_3[0x17];\n  if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }\nLAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }\nLAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return CONCAT44(param_7,param_6);\nLAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);\n  if (iVar20 == 0) goto LAB_0009ca50;\n  goto LAB_0009c96b;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "short *psVar3;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar3" (* "*") (identifier "psVar3")) (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "undefined1 uVar5;" (type_identifier "undefined1") (identifier "uVar5") (; ";")) (declaration "ushort uVar6;" (type_identifier "ushort") (identifier "uVar6") (; ";")) (declaration "ushort uVar7;" (type_identifier "ushort") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "char cVar14;" (primitive_type "char") (identifier "cVar14") (; ";")) (declaration "char cVar15;" (primitive_type "char") (identifier "cVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "short sVar17;" (sized_type_specifier "short" (short "short")) (identifier "sVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "undefined4 *puVar23;" (type_identifier "undefined4") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "uint *puVar28;" (type_identifier "uint") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "uint *puVar29;" (type_identifier "uint") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "int *piVar31;" (primitive_type "int") (pointer_declarator "*piVar31" (* "*") (identifier "piVar31")) (; ";")) (declaration "ushort uVar32;" (type_identifier "ushort") (identifier "uVar32") (; ";")) (declaration "uint uVar33;" (type_identifier "uint") (identifier "uVar33") (; ";")) (declaration "int iVar34;" (primitive_type "int") (identifier "iVar34") (; ";")) (declaration "uint uVar35;" (type_identifier "uint") (identifier "uVar35") (; ";")) (declaration "byte *pbVar36;" (type_identifier "byte") (pointer_declarator "*pbVar36" (* "*") (identifier "pbVar36")) (; ";")) (declaration "uint uVar37;" (type_identifier "uint") (identifier "uVar37") (; ";")) (declaration "uint uVar38;" (type_identifier "uint") (identifier "uVar38") (; ";")) (declaration "undefined4 *puVar39;" (type_identifier "undefined4") (pointer_declarator "*puVar39" (* "*") (identifier "puVar39")) (; ";")) (declaration "int iVar40;" (primitive_type "int") (identifier "iVar40") (; ";")) (declaration "int iVar41;" (primitive_type "int") (identifier "iVar41") (; ";")) (declaration "int iVar42;" (primitive_type "int") (identifier "iVar42") (; ";")) (declaration "int iVar43;" (primitive_type "int") (identifier "iVar43") (; ";")) (declaration "uint *puVar44;" (type_identifier "uint") (pointer_declarator "*puVar44" (* "*") (identifier "puVar44")) (; ";")) (declaration "uint uVar45;" (type_identifier "uint") (identifier "uVar45") (; ";")) (declaration "int iVar46;" (primitive_type "int") (identifier "iVar46") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar47;" (primitive_type "bool") (identifier "bVar47") (; ";")) (declaration "bool bVar48;" (primitive_type "bool") (identifier "bVar48") (; ";")) (declaration "uint *local_194;" (type_identifier "uint") (pointer_declarator "*local_194" (* "*") (identifier "local_194")) (; ";")) (declaration "int local_184;" (primitive_type "int") (identifier "local_184") (; ";")) (declaration "uint local_17c;" (type_identifier "uint") (identifier "local_17c") (; ";")) (declaration "int local_168;" (primitive_type "int") (identifier "local_168") (; ";")) (declaration "int local_158;" (primitive_type "int") (identifier "local_158") (; ";")) (declaration "uint local_154;" (type_identifier "uint") (identifier "local_154") (; ";")) (declaration "int local_144;" (primitive_type "int") (identifier "local_144") (; ";")) (declaration "int local_140;" (primitive_type "int") (identifier "local_140") (; ";")) (declaration "int local_13c;" (primitive_type "int") (identifier "local_13c") (; ";")) (declaration "int local_134;" (primitive_type "int") (identifier "local_134") (; ";")) (declaration "int *local_12c;" (primitive_type "int") (pointer_declarator "*local_12c" (* "*") (identifier "local_12c")) (; ";")) (declaration "int local_128;" (primitive_type "int") (identifier "local_128") (; ";")) (declaration "int *local_120;" (primitive_type "int") (pointer_declarator "*local_120" (* "*") (identifier "local_120")) (; ";")) (declaration "uint local_118;" (type_identifier "uint") (identifier "local_118") (; ";")) (declaration "code *local_f0 [6];" (type_identifier "code") (pointer_declarator "*local_f0 [6]" (* "*") (array_declarator "local_f0 [6]" (identifier "local_f0") ([ "[") (number_literal "6") (] "]"))) (; ";")) (declaration "int *local_d8;" (primitive_type "int") (pointer_declarator "*local_d8" (* "*") (identifier "local_d8")) (; ";")) (declaration "int local_d4;" (primitive_type "int") (identifier "local_d4") (; ";")) (declaration "int local_d0;" (primitive_type "int") (identifier "local_d0") (; ";")) (declaration "int local_cc;" (primitive_type "int") (identifier "local_cc") (; ";")) (declaration "int local_c8;" (primitive_type "int") (identifier "local_c8") (; ";")) (declaration "int local_c4;" (primitive_type "int") (identifier "local_c4") (; ";")) (declaration "int *local_c0;" (primitive_type "int") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "undefined4 local_bc;" (type_identifier "undefined4") (identifier "local_bc") (; ";")) (declaration "int local_b8;" (primitive_type "int") (identifier "local_b8") (; ";")) (declaration "code *local_b4;" (type_identifier "code") (pointer_declarator "*local_b4" (* "*") (identifier "local_b4")) (; ";")) (declaration "code *local_b0;" (type_identifier "code") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "undefined4 local_ac;" (type_identifier "undefined4") (identifier "local_ac") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int local_a4;" (primitive_type "int") (identifier "local_a4") (; ";")) (declaration "int *local_a0;" (primitive_type "int") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "int *local_84;" (primitive_type "int") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "int *local_80;" (primitive_type "int") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78;" (type_identifier "undefined4") (identifier "local_78") (; ";")) (declaration "undefined2 local_74;" (type_identifier "undefined2") (identifier "local_74") (; ";")) (declaration "undefined1 local_72;" (type_identifier "undefined1") (identifier "local_72") (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined2 local_3c;" (type_identifier "undefined2") (identifier "local_3c") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x9a949;" (assignment_expression "uStack_14 = 0x9a949" (identifier "uStack_14") (= "=") (number_literal "0x9a949")) (; ";")) (expression_statement "iVar41 = *param_1;" (assignment_expression "iVar41 = *param_1" (identifier "iVar41") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar42 = param_5[0x12];" (assignment_expression "iVar42 = param_5[0x12]" (identifier "iVar42") (= "=") (subscript_expression "param_5[0x12]" (identifier "param_5") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "uVar18 = (uint)*(byte *)(param_5 + 0xd);" (assignment_expression "uVar18 = (uint)*(byte *)(param_5 + 0xd)" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)(param_5 + 0xd)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_5 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xd)" (( "(") (binary_expression "param_5 + 0xd" (identifier "param_5") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (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 "piVar1 = param_3 + 0x12;" (assignment_expression "piVar1 = param_3 + 0x12" (identifier "piVar1") (= "=") (binary_expression "param_3 + 0x12" (identifier "param_3") (+ "+") (number_literal "0x12"))) (; ";")) (expression_statement "iVar8 = param_3[1];" (assignment_expression "iVar8 = param_3[1]" (identifier "iVar8") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);" (assignment_expression "iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar8 + 0x30 + uVar18 * 0x44)" (* "*") (cast_expression "(int *)(iVar8 + 0x30 + uVar18 * 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x30 + uVar18 * 0x44)" (( "(") (binary_expression "iVar8 + 0x30 + uVar18 * 0x44" (binary_expression "iVar8 + 0x30" (identifier "iVar8") (+ "+") (number_literal "0x30")) (+ "+") (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44"))) () ")"))))) (; ";")) (expression_statement "uVar35 = param_7;" (assignment_expression "uVar35 = param_7" (identifier "uVar35") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uVar45 = param_6;" (assignment_expression "uVar45 = param_6" (identifier "uVar45") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (0 < param_3[0x79]) {\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" (if "if") (parenthesized_expression "(0 < param_3[0x79])" (( "(") (binary_expression "0 < param_3[0x79]" (number_literal "0") (< "<") (subscript_expression "param_3[0x79]" (identifier "param_3") ([ "[") (number_literal "0x79") (] "]"))) () ")")) (compound_statement "{\n    if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }\n    uVar35 = uVar35 & param_7;\n    uVar45 = uVar45 & param_6;\n  }" ({ "{") (if_statement "if (param_3[0x7a] == iVar9) {\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }\n    else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" (if "if") (parenthesized_expression "(param_3[0x7a] == iVar9)" (( "(") (binary_expression "param_3[0x7a] == iVar9" (subscript_expression "param_3[0x7a]" (identifier "param_3") ([ "[") (number_literal "0x7a") (] "]")) (== "==") (identifier "iVar9")) () ")")) (compound_statement "{\n      uVar45 = 0xfffffffe;\n      uVar35 = 0xffffffff;\n    }" ({ "{") (expression_statement "uVar45 = 0xfffffffe;" (assignment_expression "uVar45 = 0xfffffffe" (identifier "uVar45") (= "=") (number_literal "0xfffffffe")) (; ";")) (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" (identifier "uVar35") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" (else "else") (compound_statement "{\n      uVar19 = 0;\n      do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);\n      bVar48 = (uVar33 & 0x20) == 0;\n      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));\n      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));\n    }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      } while (iVar9 != param_3[iVar20]);" (do "do") (compound_statement "{\n        uVar33 = uVar19 + 1;\n        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;\n        iVar20 = uVar19 + 0x7b;\n        uVar19 = uVar33;\n      }" ({ "{") (expression_statement "uVar33 = uVar19 + 1;" (assignment_expression "uVar33 = uVar19 + 1" (identifier "uVar33") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_3[0x79] == uVar33) goto LAB_0009a9fc;" (if "if") (parenthesized_expression "(param_3[0x79] == uVar33)" (( "(") (binary_expression "param_3[0x79] == uVar33" (subscript_expression "param_3[0x79]" (identifier "param_3") ([ "[") (number_literal "0x79") (] "]")) (== "==") (identifier "uVar33")) () ")")) (goto_statement "goto LAB_0009a9fc;" (goto "goto") (statement_identifier "LAB_0009a9fc") (; ";"))) (expression_statement "iVar20 = uVar19 + 0x7b;" (assignment_expression "iVar20 = uVar19 + 0x7b" (identifier "iVar20") (= "=") (binary_expression "uVar19 + 0x7b" (identifier "uVar19") (+ "+") (number_literal "0x7b"))) (; ";")) (expression_statement "uVar19 = uVar33;" (assignment_expression "uVar19 = uVar33" (identifier "uVar19") (= "=") (identifier "uVar33")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != param_3[iVar20])" (( "(") (binary_expression "iVar9 != param_3[iVar20]" (identifier "iVar9") (!= "!=") (subscript_expression "param_3[iVar20]" (identifier "param_3") ([ "[") (identifier "iVar20") (] "]"))) () ")")) (; ";")) (expression_statement "bVar48 = (uVar33 & 0x20) == 0;" (assignment_expression "bVar48 = (uVar33 & 0x20) == 0" (identifier "bVar48") (= "=") (binary_expression "(uVar33 & 0x20) == 0" (parenthesized_expression "(uVar33 & 0x20)" (( "(") (binary_expression "uVar33 & 0x20" (identifier "uVar33") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f))" (identifier "uVar45") (= "=") (unary_expression "~((uint)bVar48 << ((byte)uVar33 & 0x1f))" (~ "~") (parenthesized_expression "((uint)bVar48 << ((byte)uVar33 & 0x1f))" (( "(") (binary_expression "(uint)bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)bVar48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar48")) (<< "<<") (parenthesized_expression "((byte)uVar33 & 0x1f)" (( "(") (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar33")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));" (assignment_expression "uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" (identifier "uVar35") (= "=") (unary_expression "~((uint)!bVar48 << ((byte)uVar33 & 0x1f))" (~ "~") (parenthesized_expression "((uint)!bVar48 << ((byte)uVar33 & 0x1f))" (( "(") (binary_expression "(uint)!bVar48 << ((byte)uVar33 & 0x1f)" (cast_expression "(uint)!bVar48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (unary_expression "!bVar48" (! "!") (identifier "bVar48"))) (<< "<<") (parenthesized_expression "((byte)uVar33 & 0x1f)" (( "(") (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar33")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar35 = uVar35 & param_7;" (assignment_expression "uVar35 = uVar35 & param_7" (identifier "uVar35") (= "=") (binary_expression "uVar35 & param_7" (identifier "uVar35") (& "&") (identifier "param_7"))) (; ";")) (expression_statement "uVar45 = uVar45 & param_6;" (assignment_expression "uVar45 = uVar45 & param_6" (identifier "uVar45") (= "=") (binary_expression "uVar45 & param_6" (identifier "uVar45") (& "&") (identifier "param_6"))) (; ";")) (} "}"))) (labeled_statement "LAB_0009a9fc:\n  param_5[0x14] = uVar35;" (statement_identifier "LAB_0009a9fc") (: ":") (expression_statement "param_5[0x14] = uVar35;" (assignment_expression "param_5[0x14] = uVar35" (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar35")) (; ";"))) (expression_statement "param_5[0x13] = uVar45;" (assignment_expression "param_5[0x13] = uVar45" (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar45")) (; ";")) (expression_statement "uVar35 = param_3[0x11];" (assignment_expression "uVar35 = param_3[0x11]" (identifier "uVar35") (= "=") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (expression_statement "uVar45 = param_3[0x10];" (assignment_expression "uVar45 = param_3[0x10]" (identifier "uVar45") (= "=") (subscript_expression "param_3[0x10]" (identifier "param_3") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "iVar20 = param_1[0xe] + -1;" (assignment_expression "iVar20 = param_1[0xe] + -1" (identifier "iVar20") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xe] = iVar20;" (assignment_expression "param_1[0xe] = iVar20" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "param_5[4] = iVar20;" (assignment_expression "param_5[4] = iVar20" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "param_5[3] = iVar20;" (assignment_expression "param_5[3] = iVar20" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar40 = param_1[0xe] + -1;" (assignment_expression "iVar40 = param_1[0xe] + -1" (identifier "iVar40") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xe] = iVar40;" (assignment_expression "param_1[0xe] = iVar40" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar40")) (; ";")) (expression_statement "param_5[6] = iVar40;" (assignment_expression "param_5[6] = iVar40" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar40")) (; ";")) (if_statement "if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" (if "if") (parenthesized_expression "(((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0))" (( "(") (binary_expression "((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" (parenthesized_expression "((char)param_5[0xd] != '\0')" (( "(") (binary_expression "(char)param_5[0xd] != '\0'" (cast_expression "(char)param_5[0xd]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_5[0xd]" (identifier "param_5") ([ "[") (number_literal "0xd") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8" (pointer_expression "*(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" (* "*") (cast_expression "(byte *)(iVar8 + 0x2c + uVar18 * 0x44)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c + uVar18 * 0x44)" (( "(") (binary_expression "iVar8 + 0x2c + uVar18 * 0x44" (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) (+ "+") (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar34 = param_1[0xb] + 1;\n    param_1[0xb] = iVar34;\n    *param_5 = iVar34;\n    FUN_00049630(iVar34);\n  }" ({ "{") (expression_statement "iVar34 = param_1[0xb] + 1;" (assignment_expression "iVar34 = param_1[0xb] + 1" (identifier "iVar34") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = iVar34;" (assignment_expression "param_1[0xb] = iVar34" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar34")) (; ";")) (expression_statement "*param_5 = iVar34;" (assignment_expression "*param_5 = iVar34" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "iVar34")) (; ";")) (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 == 0) {\n    uVar19 = 0;\n  }\n  else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar19 = 0;\n  }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" (else "else") (compound_statement "{\n    uVar19 = param_4;\n    if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }\n  }" ({ "{") (expression_statement "uVar19 = param_4;" (assignment_expression "uVar19 = param_4" (identifier "uVar19") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_3[param_4 * 0x15 + 0xba] == 0) {\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" (if "if") (parenthesized_expression "(param_3[param_4 * 0x15 + 0xba] == 0)" (( "(") (binary_expression "param_3[param_4 * 0x15 + 0xba] == 0" (subscript_expression "param_3[param_4 * 0x15 + 0xba]" (identifier "param_3") ([ "[") (binary_expression "param_4 * 0x15 + 0xba" (binary_expression "param_4 * 0x15" (identifier "param_4") (* "*") (number_literal "0x15")) (+ "+") (number_literal "0xba")) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      piVar31 = param_3 + param_4 * 0x15 + 0xa5;\n      do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);\n    }" ({ "{") (expression_statement "piVar31 = param_3 + param_4 * 0x15 + 0xa5;" (assignment_expression "piVar31 = param_3 + param_4 * 0x15 + 0xa5" (identifier "piVar31") (= "=") (binary_expression "param_3 + param_4 * 0x15 + 0xa5" (binary_expression "param_3 + param_4 * 0x15" (identifier "param_3") (+ "+") (binary_expression "param_4 * 0x15" (identifier "param_4") (* "*") (number_literal "0x15"))) (+ "+") (number_literal "0xa5"))) (; ";")) (do_statement "do {\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      } while (iVar34 == 0);" (do "do") (compound_statement "{\n        uVar19 = uVar19 - 1;\n        if (uVar19 == 0) break;\n        iVar34 = *piVar31;\n        piVar31 = piVar31 + -0x15;\n      }" ({ "{") (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar19 == 0) break;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar34 = *piVar31;" (assignment_expression "iVar34 = *piVar31" (identifier "iVar34") (= "=") (pointer_expression "*piVar31" (* "*") (identifier "piVar31"))) (; ";")) (expression_statement "piVar31 = piVar31 + -0x15;" (assignment_expression "piVar31 = piVar31 + -0x15" (identifier "piVar31") (= "=") (binary_expression "piVar31 + -0x15" (identifier "piVar31") (+ "+") (number_literal "-0x15"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar34 == 0)" (( "(") (binary_expression "iVar34 == 0" (identifier "iVar34") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar34 = uVar18 * 0x44 + iVar8;" (assignment_expression "iVar34 = uVar18 * 0x44 + iVar8" (identifier "iVar34") (= "=") (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "bVar4 = *(byte *)(iVar34 + 0x2d);" (assignment_expression "bVar4 = *(byte *)(iVar34 + 0x2d)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(iVar34 + 0x2d)" (* "*") (cast_expression "(byte *)(iVar34 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x2d)" (( "(") (binary_expression "iVar34 + 0x2d" (identifier "iVar34") (+ "+") (number_literal "0x2d")) () ")"))))) (; ";")) (if_statement "if ((bVar4 & 0x10) == 0) {\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }\n  else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" (if "if") (parenthesized_expression "((bVar4 & 0x10) == 0)" (( "(") (binary_expression "(bVar4 & 0x10) == 0" (parenthesized_expression "(bVar4 & 0x10)" (( "(") (binary_expression "bVar4 & 0x10" (identifier "bVar4") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);\n    if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }\n    uVar33 = uVar45 & 1;\n    uVar35 = *(uint *)(iVar42 + 0x24);\n    if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }\nLAB_0009b1e0:\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" ({ "{") (expression_statement "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" (identifier "uVar45") (= "=") (binary_expression "uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f)" (binary_expression "uVar45 >> ((byte)param_4 & 0x1f)" (identifier "uVar45") (>> ">>") (parenthesized_expression "((byte)param_4 & 0x1f)" (( "(") (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_4")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar35 << 0x20 - ((byte)param_4 & 0x1f)" (identifier "uVar35") (<< "<<") (binary_expression "0x20 - ((byte)param_4 & 0x1f)" (number_literal "0x20") (- "-") (parenthesized_expression "((byte)param_4 & 0x1f)" (( "(") (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_4")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (if_statement "if ((param_4 & 0x20) != 0) {\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" (if "if") (parenthesized_expression "((param_4 & 0x20) != 0)" (( "(") (binary_expression "(param_4 & 0x20) != 0" (parenthesized_expression "(param_4 & 0x20)" (( "(") (binary_expression "param_4 & 0x20" (identifier "param_4") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);\n    }" ({ "{") (expression_statement "uVar45 = uVar35 >> ((byte)param_4 & 0x1f);" (assignment_expression "uVar45 = uVar35 >> ((byte)param_4 & 0x1f)" (identifier "uVar45") (= "=") (binary_expression "uVar35 >> ((byte)param_4 & 0x1f)" (identifier "uVar35") (>> ">>") (parenthesized_expression "((byte)param_4 & 0x1f)" (( "(") (binary_expression "(byte)param_4 & 0x1f" (cast_expression "(byte)param_4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_4")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar33 = uVar45 & 1;" (assignment_expression "uVar33 = uVar45 & 1" (identifier "uVar33") (= "=") (binary_expression "uVar45 & 1" (identifier "uVar45") (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(iVar42 + 0x24)" (* "*") (cast_expression "(uint *)(iVar42 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x24)" (( "(") (binary_expression "iVar42 + 0x24" (identifier "iVar42") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((uVar35 & 0x400) == 0) {\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }\n    else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" (if "if") (parenthesized_expression "((uVar35 & 0x400) == 0)" (( "(") (binary_expression "(uVar35 & 0x400) == 0" (parenthesized_expression "(uVar35 & 0x400)" (( "(") (binary_expression "uVar35 & 0x400" (identifier "uVar35") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }\n    }" ({ "{") (if_statement "if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }\n      else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" (if "if") (parenthesized_expression "(((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0))" (( "(") (binary_expression "((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)" (parenthesized_expression "((uVar35 & 0x100) == 0)" (( "(") (binary_expression "(uVar35 & 0x100) == 0" (parenthesized_expression "(uVar35 & 0x100)" (( "(") (binary_expression "uVar35 & 0x100" (identifier "uVar35") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uVar35 & 5) == 0)" (( "(") (binary_expression "(uVar35 & 5) == 0" (parenthesized_expression "(uVar35 & 5)" (( "(") (binary_expression "uVar35 & 5" (identifier "uVar35") (& "&") (number_literal "5")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar34 = param_3[uVar19 * 0x15 + 0xbd];\n        if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }\n        if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }\n        uVar32 = *(ushort *)(iVar42 + 0x1c);\n        uVar6 = *(ushort *)(iVar42 + 0x18);\n        local_118 = (uint)uVar6;\n        uVar7 = *(ushort *)(iVar42 + 0x1a);\n        local_158 = *(int *)(iVar42 + 0x20);\n        iVar41 = param_5[2];\n        if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }\n        iVar20 = param_1[0xb];\n        local_168 = iVar20 + 1;\n        if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }\n        local_128 = 0;\n        if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }\n        if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }\n        piVar31 = (int *)param_1[2];\n        iVar34 = param_5[0x12];\n        uVar32 = *(ushort *)(iVar34 + 0x2a);\n        uVar35 = (uint)uVar32;\n        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);\n        param_1[0xb] = iVar20 + uVar37 + uVar45;\n        FUN_0002e410();\n        iVar20 = FUN_000300b0();\n        if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }\n        if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }\n        if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }\n        if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }\n        if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }\nLAB_0009be0e:\n        FUN_00049800(iVar20);\n        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }\n        if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }\nLAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }\n        if (local_144 != 0) {\n          FUN_00023410();\n        }\n        param_5[0xf] = param_2[0x1a];\n        if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }\n        if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }\n        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }\n        uVar35 = *(uint *)(iVar42 + 0x24);\n        if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }\n        param_5[0xe] = iVar41;\n        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;\n        if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }\n        if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }\n      }" ({ "{") (expression_statement "iVar34 = param_3[uVar19 * 0x15 + 0xbd];" (assignment_expression "iVar34 = param_3[uVar19 * 0x15 + 0xbd]" (identifier "iVar34") (= "=") (subscript_expression "param_3[uVar19 * 0x15 + 0xbd]" (identifier "param_3") ([ "[") (binary_expression "uVar19 * 0x15 + 0xbd" (binary_expression "uVar19 * 0x15" (identifier "uVar19") (* "*") (number_literal "0x15")) (+ "+") (number_literal "0xbd")) (] "]"))) (; ";")) (if_statement "if ((uVar35 & 0x102) == 0x102) {\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x102) == 0x102)" (( "(") (binary_expression "(uVar35 & 0x102) == 0x102" (parenthesized_expression "(uVar35 & 0x102)" (( "(") (binary_expression "uVar35 & 0x102" (identifier "uVar35") (& "&") (number_literal "0x102")) () ")")) (== "==") (number_literal "0x102")) () ")")) (compound_statement "{\n          if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }\n          if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }\n          param_5[0xf] = iVar41;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          param_5[0xe] = iVar9;\n          goto LAB_0009b1f0;\n        }" ({ "{") (if_statement "if ((uVar35 & 0x20) != 0) {\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }" (if "if") (parenthesized_expression "((uVar35 & 0x20) != 0)" (( "(") (binary_expression "(uVar35 & 0x20) != 0" (parenthesized_expression "(uVar35 & 0x20)" (( "(") (binary_expression "uVar35 & 0x20" (identifier "uVar35") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar24 = *(int **)(iVar42 + 0x30);\n            piVar31 = (int *)*piVar24;\n            if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }\n            piVar24 = piVar31;\n            if (uVar33 != 0) goto LAB_0009c549;\n            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;\n            piVar24 = (int *)0x0;\n            goto LAB_0009c2a8;\n          }" ({ "{") (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" (identifier "piVar24") (= "=") (pointer_expression "*(int **)(iVar42 + 0x30)" (* "*") (cast_expression "(int **)(iVar42 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "piVar31 = (int *)*piVar24;" (assignment_expression "piVar31 = (int *)*piVar24" (identifier "piVar31") (= "=") (cast_expression "(int *)*piVar24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar24" (* "*") (identifier "piVar24")))) (; ";")) (if_statement "if ((uVar35 & 0x10) != 0) {\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" (if "if") (parenthesized_expression "((uVar35 & 0x10) != 0)" (( "(") (binary_expression "(uVar35 & 0x10) != 0" (parenthesized_expression "(uVar35 & 0x10)" (( "(") (binary_expression "uVar35 & 0x10" (identifier "uVar35") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar41 = 4;\n              goto LAB_0009c28b;\n            }" ({ "{") (expression_statement "iVar41 = 4;" (assignment_expression "iVar41 = 4" (identifier "iVar41") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_0009c28b;" (goto "goto") (statement_identifier "LAB_0009c28b") (; ";")) (} "}"))) (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" (identifier "piVar24") (= "=") (identifier "piVar31")) (; ";")) (if_statement "if (uVar33 != 0) goto LAB_0009c549;" (if "if") (parenthesized_expression "(uVar33 != 0)" (( "(") (binary_expression "uVar33 != 0" (identifier "uVar33") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009c549;" (goto "goto") (statement_identifier "LAB_0009c549") (; ";"))) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009bc9a;" (if "if") (parenthesized_expression "(piVar31 == (int *)0x0)" (( "(") (binary_expression "piVar31 == (int *)0x0" (identifier "piVar31") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009bc9a;" (goto "goto") (statement_identifier "LAB_0009bc9a") (; ";"))) (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" (identifier "piVar24") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0009c2a8;" (goto "goto") (statement_identifier "LAB_0009c2a8") (; ";")) (} "}"))) (if_statement "if ((uVar35 & 0x10) == 0) {\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }\n          else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" (if "if") (parenthesized_expression "((uVar35 & 0x10) == 0)" (( "(") (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" (( "(") (binary_expression "uVar35 & 0x10" (identifier "uVar35") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }\nLAB_0009bc9a:\n            FUN_00049630(iVar34);\n            iVar41 = param_2[0x1a];\nLAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;\n          }" ({ "{") (if_statement "if (uVar33 != 0) {\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" (if "if") (parenthesized_expression "(uVar33 != 0)" (( "(") (binary_expression "uVar33 != 0" (identifier "uVar33") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar24 = (int *)0x0;\n              goto LAB_0009c549;\n            }" ({ "{") (expression_statement "piVar24 = (int *)0x0;" (assignment_expression "piVar24 = (int *)0x0" (identifier "piVar24") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0009c549;" (goto "goto") (statement_identifier "LAB_0009c549") (; ";")) (} "}"))) (labeled_statement "LAB_0009bc9a:\n            FUN_00049630(iVar34);" (statement_identifier "LAB_0009bc9a") (: ":") (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")"))) (; ";"))) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" (identifier "iVar41") (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (labeled_statement "LAB_0009bcbb:\n            *(undefined1 *)((int)param_5 + 0x35) = 5;" (statement_identifier "LAB_0009bcbb") (: ":") (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "5")) (; ";"))) (} "}")) (else_clause "else {\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" (else "else") (compound_statement "{\n            iVar41 = 0;\n            piVar31 = (int *)0x0;\n            piVar24 = *(int **)(iVar42 + 0x30);\nLAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);\n            if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }\n            if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }\n            iVar41 = param_2[0x1a];\n            if (uVar33 == 0) goto LAB_0009bcbb;\n            *(undefined1 *)((int)param_5 + 0x35) = 4;\n          }" ({ "{") (expression_statement "iVar41 = 0;" (assignment_expression "iVar41 = 0" (identifier "iVar41") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar31 = (int *)0x0;" (assignment_expression "piVar31 = (int *)0x0" (identifier "piVar31") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar24 = *(int **)(iVar42 + 0x30);" (assignment_expression "piVar24 = *(int **)(iVar42 + 0x30)" (identifier "piVar24") (= "=") (pointer_expression "*(int **)(iVar42 + 0x30)" (* "*") (cast_expression "(int **)(iVar42 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (labeled_statement "LAB_0009c28b:\n            piVar11 = *(int **)((int)piVar24 + iVar41);" (statement_identifier "LAB_0009c28b") (: ":") (expression_statement "piVar11 = *(int **)((int)piVar24 + iVar41);" (assignment_expression "piVar11 = *(int **)((int)piVar24 + iVar41)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)((int)piVar24 + iVar41)" (* "*") (cast_expression "(int **)((int)piVar24 + iVar41)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + iVar41)" (( "(") (binary_expression "(int)piVar24 + iVar41" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (identifier "iVar41")) () ")"))))) (; ";"))) (if_statement "if (uVar33 == 0) {\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }\n            else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" (if "if") (parenthesized_expression "(uVar33 == 0)" (( "(") (binary_expression "uVar33 == 0" (identifier "uVar33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              piVar24 = piVar11;\n              if (piVar31 == (int *)0x0) goto LAB_0009c549;\nLAB_0009c2a8:\n              local_24 = 0x18161719;\n              pcVar10 = *(char **)(*piVar31 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }\n              FUN_000493f0(iVar20,local_194);\n              if (local_b8 != 0) {\n                FUN_000254e0();\n              }\n            }" ({ "{") (expression_statement "piVar24 = piVar11;" (assignment_expression "piVar24 = piVar11" (identifier "piVar24") (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (piVar31 == (int *)0x0) goto LAB_0009c549;" (if "if") (parenthesized_expression "(piVar31 == (int *)0x0)" (( "(") (binary_expression "piVar31 == (int *)0x0" (identifier "piVar31") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009c549;" (goto "goto") (statement_identifier "LAB_0009c549") (; ";"))) (labeled_statement "LAB_0009c2a8:\n              local_24 = 0x18161719;" (statement_identifier "LAB_0009c2a8") (: ":") (expression_statement "local_24 = 0x18161719;" (assignment_expression "local_24 = 0x18161719" (identifier "local_24") (= "=") (number_literal "0x18161719")) (; ";"))) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(*piVar31 + 0x10)" (* "*") (cast_expression "(char **)(*piVar31 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar31 + 0x10)" (( "(") (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" (identifier "cVar15") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" (if "if") (parenthesized_expression "(cVar15 == -0x53)" (( "(") (binary_expression "cVar15 == -0x53" (identifier "cVar15") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" ({ "{") (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" (identifier "cVar15") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" (if "if") (parenthesized_expression "(cVar15 == -0x52)" (( "(") (binary_expression "cVar15 == -0x52" (identifier "cVar15") (== "==") (number_literal "-0x52")) () ")")) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;\n                if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }\n                local_b8 = (int)local_194;\n                FUN_00095030(1);\n              }" ({ "{") (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" (identifier "iVar41") (= "=") (pointer_expression "**(int **)(pcVar10 + 0x14)" (* "*") (pointer_expression "*(int **)(pcVar10 + 0x14)" (* "*") (cast_expression "(int **)(pcVar10 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (labeled_statement "LAB_0009cf97:\n                if (iVar41 < 2) goto LAB_0009c2d7;" (statement_identifier "LAB_0009cf97") (: ":") (if_statement "if (iVar41 < 2) goto LAB_0009c2d7;" (if "if") (parenthesized_expression "(iVar41 < 2)" (( "(") (binary_expression "iVar41 < 2" (identifier "iVar41") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0009c2d7;" (goto "goto") (statement_identifier "LAB_0009c2d7") (; ";")))) (if_statement "if (*(char *)((int)param_1 + 0x13) == '\0') {\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }\n                else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + 0x13) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x13) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x13)" (* "*") (cast_expression "(char *)((int)param_1 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x13)" (( "(") (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x13")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  local_194 = (uint *)(param_1[0xb] + 1);\n                  param_1[0xb] = (int)local_194;\n                }" ({ "{") (expression_statement "local_194 = (uint *)(param_1[0xb] + 1);" (assignment_expression "local_194 = (uint *)(param_1[0xb] + 1)" (identifier "local_194") (= "=") (cast_expression "(uint *)(param_1[0xb] + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0xb] + 1)" (( "(") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_1[0xb] = (int)local_194;" (assignment_expression "param_1[0xb] = (int)local_194" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (cast_expression "(int)local_194" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_194"))) (; ";")) (} "}")) (else_clause "else {\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" (else "else") (compound_statement "{\n                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;\n                  *(byte *)((int)param_1 + 0x13) = bVar16;\n                  local_194 = (uint *)param_1[bVar16 + 0x26];\n                }" ({ "{") (expression_statement "bVar16 = *(char *)((int)param_1 + 0x13) - 1;" (assignment_expression "bVar16 = *(char *)((int)param_1 + 0x13) - 1" (identifier "bVar16") (= "=") (binary_expression "*(char *)((int)param_1 + 0x13) - 1" (pointer_expression "*(char *)((int)param_1 + 0x13)" (* "*") (cast_expression "(char *)((int)param_1 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x13)" (( "(") (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x13")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 0x13) = bVar16;" (assignment_expression "*(byte *)((int)param_1 + 0x13) = bVar16" (pointer_expression "*(byte *)((int)param_1 + 0x13)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x13)" (( "(") (binary_expression "(int)param_1 + 0x13" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x13")) () ")")))) (= "=") (identifier "bVar16")) (; ";")) (expression_statement "local_194 = (uint *)param_1[bVar16 + 0x26];" (assignment_expression "local_194 = (uint *)param_1[bVar16 + 0x26]" (identifier "local_194") (= "=") (cast_expression "(uint *)param_1[bVar16 + 0x26]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[bVar16 + 0x26]" (identifier "param_1") ([ "[") (binary_expression "bVar16 + 0x26" (identifier "bVar16") (+ "+") (number_literal "0x26")) (] "]")))) (; ";")) (} "}")))) (expression_statement "local_b8 = (int)local_194;" (assignment_expression "local_b8 = (int)local_194" (identifier "local_b8") (= "=") (cast_expression "(int)local_194" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_194"))) (; ";")) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" (identifier "FUN_00095030") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" (else "else") (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }\nLAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();\n                FUN_00020250();\n              }" ({ "{") (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" (if "if") (parenthesized_expression "(cVar15 == -0x78)" (( "(") (binary_expression "cVar15 == -0x78" (identifier "cVar15") (== "==") (number_literal "-0x78")) () ")")) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009cf97;\n                }" ({ "{") (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (identifier "iVar41") (= "=") (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" (* "*") (cast_expression "(int *)(pcVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0009cf97;" (goto "goto") (statement_identifier "LAB_0009cf97") (; ";")) (} "}"))) (labeled_statement "LAB_0009c2d7:\n                local_194 = (uint *)FUN_000958f0();" (statement_identifier "LAB_0009c2d7") (: ":") (expression_statement "local_194 = (uint *)FUN_000958f0();" (assignment_expression "local_194 = (uint *)FUN_000958f0()" (identifier "local_194") (= "=") (cast_expression "(uint *)FUN_000958f0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000958f0()" (identifier "FUN_000958f0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_000493f0(iVar20,local_194);" (call_expression "FUN_000493f0(iVar20,local_194)" (identifier "FUN_000493f0") (argument_list "(iVar20,local_194)" (( "(") (identifier "iVar20") (, ",") (identifier "local_194") () ")"))) (; ";")) (if_statement "if (local_b8 != 0) {\n                FUN_000254e0();\n              }" (if "if") (parenthesized_expression "(local_b8 != 0)" (( "(") (binary_expression "local_b8 != 0" (identifier "local_b8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_000254e0();\n              }" ({ "{") (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" (identifier "FUN_000254e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" (else "else") (compound_statement "{\n              piVar24 = piVar31;\n              piVar31 = piVar11;\n              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;\nLAB_0009c549:\n              FUN_00049630(iVar34);\n            }" ({ "{") (expression_statement "piVar24 = piVar31;" (assignment_expression "piVar24 = piVar31" (identifier "piVar24") (= "=") (identifier "piVar31")) (; ";")) (expression_statement "piVar31 = piVar11;" (assignment_expression "piVar31 = piVar11" (identifier "piVar31") (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (piVar11 != (int *)0x0) goto LAB_0009c2a8;" (if "if") (parenthesized_expression "(piVar11 != (int *)0x0)" (( "(") (binary_expression "piVar11 != (int *)0x0" (identifier "piVar11") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009c2a8;" (goto "goto") (statement_identifier "LAB_0009c2a8") (; ";"))) (labeled_statement "LAB_0009c549:\n              FUN_00049630(iVar34);" (statement_identifier "LAB_0009c549") (: ":") (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")"))) (; ";"))) (} "}")))) (if_statement "if (piVar24 != (int *)0x0) {\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" (if "if") (parenthesized_expression "(piVar24 != (int *)0x0)" (( "(") (binary_expression "piVar24 != (int *)0x0" (identifier "piVar24") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar41 = *piVar24;\n              param_1[0xb] = param_1[0xb] + 1;\n              FUN_00095030(1);\n              pcVar10 = *(char **)(iVar41 + 0x10);\n              cVar15 = *pcVar10;\n              if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }\n              if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }\n              iVar41 = param_2[0x1a];\n              if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              iVar41 = param_1[0xb] + 1;\n              param_1[0xb] = iVar41;\n              FUN_00049630(iVar41);\n              FUN_000493f0(iVar20,iVar41);\n              if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }\n              goto LAB_0009b1e0;\n            }" ({ "{") (expression_statement "iVar41 = *piVar24;" (assignment_expression "iVar41 = *piVar24" (identifier "iVar41") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] + 1;" (assignment_expression "param_1[0xb] = param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" (identifier "FUN_00095030") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "pcVar10 = *(char **)(iVar41 + 0x10);" (assignment_expression "pcVar10 = *(char **)(iVar41 + 0x10)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(iVar41 + 0x10)" (* "*") (cast_expression "(char **)(iVar41 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar41 + 0x10)" (( "(") (binary_expression "iVar41 + 0x10" (identifier "iVar41") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" (identifier "cVar15") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (if_statement "if (cVar15 == -0x53) {\n                cVar15 = pcVar10[2];\n              }" (if "if") (parenthesized_expression "(cVar15 == -0x53)" (( "(") (binary_expression "cVar15 == -0x53" (identifier "cVar15") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n                cVar15 = pcVar10[2];\n              }" ({ "{") (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" (identifier "cVar15") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if (cVar15 == -0x52) {\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }\n              else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" (if "if") (parenthesized_expression "(cVar15 == -0x52)" (( "(") (binary_expression "cVar15 == -0x52" (identifier "cVar15") (== "==") (number_literal "-0x52")) () ")")) (compound_statement "{\n                iVar41 = **(int **)(pcVar10 + 0x14);\nLAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;\n              }" ({ "{") (expression_statement "iVar41 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar41 = **(int **)(pcVar10 + 0x14)" (identifier "iVar41") (= "=") (pointer_expression "**(int **)(pcVar10 + 0x14)" (* "*") (pointer_expression "*(int **)(pcVar10 + 0x14)" (* "*") (cast_expression "(int **)(pcVar10 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (labeled_statement "LAB_0009d05c:\n                if (iVar41 < 2) goto LAB_0009c3ac;" (statement_identifier "LAB_0009d05c") (: ":") (if_statement "if (iVar41 < 2) goto LAB_0009c3ac;" (if "if") (parenthesized_expression "(iVar41 < 2)" (( "(") (binary_expression "iVar41 < 2" (identifier "iVar41") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0009c3ac;" (goto "goto") (statement_identifier "LAB_0009c3ac") (; ";")))) (} "}")) (else_clause "else {\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" (else "else") (compound_statement "{\n                if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }\nLAB_0009c3ac:\n                FUN_00020250();\n              }" ({ "{") (if_statement "if (cVar15 == -0x78) {\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" (if "if") (parenthesized_expression "(cVar15 == -0x78)" (( "(") (binary_expression "cVar15 == -0x78" (identifier "cVar15") (== "==") (number_literal "-0x78")) () ")")) (compound_statement "{\n                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n                  goto LAB_0009d05c;\n                }" ({ "{") (expression_statement "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (identifier "iVar41") (= "=") (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" (* "*") (cast_expression "(int *)(pcVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0009d05c;" (goto "goto") (statement_identifier "LAB_0009d05c") (; ";")) (} "}"))) (labeled_statement "LAB_0009c3ac:\n                FUN_00020250();" (statement_identifier "LAB_0009c3ac") (: ":") (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" (identifier "iVar41") (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (uVar33 == 0) {\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }\n              else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" (if "if") (parenthesized_expression "(uVar33 == 0)" (( "(") (binary_expression "uVar33 == 0" (identifier "uVar33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 5;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" ({ "{") (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "5")) (; ";")) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")) (else_clause "else {\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" (else "else") (compound_statement "{\n                *(undefined1 *)((int)param_5 + 0x35) = 4;\n                param_5[0xf] = iVar41;\n                param_5[0xe] = iVar9;\n              }" ({ "{") (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")))) (expression_statement "iVar41 = param_1[0xb] + 1;" (assignment_expression "iVar41 = param_1[0xb] + 1" (identifier "iVar41") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = iVar41;" (assignment_expression "param_1[0xb] = iVar41" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "FUN_00049630(iVar41);" (call_expression "FUN_00049630(iVar41)" (identifier "FUN_00049630") (argument_list "(iVar41)" (( "(") (identifier "iVar41") () ")"))) (; ";")) (expression_statement "FUN_000493f0(iVar20,iVar41);" (call_expression "FUN_000493f0(iVar20,iVar41)" (identifier "FUN_000493f0") (argument_list "(iVar20,iVar41)" (( "(") (identifier "iVar20") (, ",") (identifier "iVar41") () ")"))) (; ";")) (if_statement "if (0 < param_2[0x1a]) {\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" (if "if") (parenthesized_expression "(0 < param_2[0x1a])" (( "(") (binary_expression "0 < param_2[0x1a]" (number_literal "0") (< "<") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n                local_158 = 0;\n                local_194 = (uint *)0x2;\n                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;\n                goto LAB_0009b1f0;\n              }" ({ "{") (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (( "(") (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "0x53")) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (goto_statement "goto LAB_0009b1e0;" (goto "goto") (statement_identifier "LAB_0009b1e0") (; ";")) (} "}"))) (expression_statement "iVar41 = param_2[0x1a];" (assignment_expression "iVar41 = param_2[0x1a]" (identifier "iVar41") (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (uVar33 == 0) goto LAB_0009bcbb;" (if "if") (parenthesized_expression "(uVar33 == 0)" (( "(") (binary_expression "uVar33 == 0" (identifier "uVar33") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009bcbb;" (goto "goto") (statement_identifier "LAB_0009bcbb") (; ";"))) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 4;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 4" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "4")) (; ";")) (} "}")))) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (if_statement "if ((uVar35 & 0x200) == 0) {\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x200) == 0)" (( "(") (binary_expression "(uVar35 & 0x200) == 0" (parenthesized_expression "(uVar35 & 0x200)" (( "(") (binary_expression "uVar35 & 0x200" (identifier "uVar35") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          iVar20 = param_1[10];\n          param_1[10] = iVar20 + 1;\n          iVar21 = param_1[0xb] + 1;\n          iVar22 = param_1[0xe] + -1;\n          param_1[0xb] = iVar21;\n          param_1[0xe] = iVar22;\n          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);\n          piVar31 = (int *)**(int **)(iVar42 + 0x30);\n          iVar42 = piVar31[7];\n          *(undefined1 *)((int)param_5 + 0x35) = 0x41;\n          param_5[0xe] = iVar21;\n          if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }\n          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }\n          iVar27 = 0;\n          iVar43 = 0;\n          iVar21 = FUN_00049630(iVar21);\n          iVar41 = param_3[0x15];\n          if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }\n          uVar32 = *(ushort *)(param_3 + 10);\n          FUN_000496a0(param_1,1,"MULTI-INDEX OR");\n          iVar41 = *(int *)(iVar42 + 0xc);\n          if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }\n          if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }\n          iVar41 = param_2[0x1a] + -1;\n          if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }\n          puVar26 = &DAT_001075d0;\n          if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }\n          *(int *)(puVar26 + 4) = param_2[0x1a];\n          FUN_00049630(param_5[3]);\n          FUN_000330b0();\n          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }\n          if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }\n          goto LAB_0009b1e0;\n        }" ({ "{") (if_statement "if ((uVar35 & 0x2000) == 0) {\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" (if "if") (parenthesized_expression "((uVar35 & 0x2000) == 0)" (( "(") (binary_expression "(uVar35 & 0x2000) == 0" (parenthesized_expression "(uVar35 & 0x2000)" (( "(") (binary_expression "uVar35 & 0x2000" (identifier "uVar35") (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }\n            *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" ({ "{") (if_statement "if ((bVar4 & 0x20) == 0) {\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" (if "if") (parenthesized_expression "((bVar4 & 0x20) == 0)" (( "(") (binary_expression "(bVar4 & 0x20) == 0" (parenthesized_expression "(bVar4 & 0x20)" (( "(") (binary_expression "bVar4 & 0x20" (identifier "bVar4") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar5 = (&DAT_000d8764)[uVar33];\n              param_5[0xe] = iVar9;\n              *(undefined1 *)((int)param_5 + 0x35) = uVar5;\n              iVar41 = FUN_00049630(iVar34);\n              *(undefined1 *)((int)param_5 + 0x37) = 1;\n              param_5[0xf] = iVar41 + 1;\n              goto LAB_0009b1e0;\n            }" ({ "{") (expression_statement "uVar5 = (&DAT_000d8764)[uVar33];" (assignment_expression "uVar5 = (&DAT_000d8764)[uVar33]" (identifier "uVar5") (= "=") (subscript_expression "(&DAT_000d8764)[uVar33]" (parenthesized_expression "(&DAT_000d8764)" (( "(") (pointer_expression "&DAT_000d8764" (& "&") (identifier "DAT_000d8764")) () ")")) ([ "[") (identifier "uVar33") (] "]"))) (; ";")) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = uVar5;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = uVar5" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iVar41 = FUN_00049630(iVar34);" (assignment_expression "iVar41 = FUN_00049630(iVar34)" (identifier "iVar41") (= "=") (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")")))) (; ";")) (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x37)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x37)" (( "(") (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x37")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_5[0xf] = iVar41 + 1;" (assignment_expression "param_5[0xf] = iVar41 + 1" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (binary_expression "iVar41 + 1" (identifier "iVar41") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0009b1e0;" (goto "goto") (statement_identifier "LAB_0009b1e0") (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0xad")) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (expression_statement "iVar20 = param_1[10];" (assignment_expression "iVar20 = param_1[10]" (identifier "iVar20") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "param_1[10] = iVar20 + 1;" (assignment_expression "param_1[10] = iVar20 + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar21 = param_1[0xb] + 1;" (assignment_expression "iVar21 = param_1[0xb] + 1" (identifier "iVar21") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar22 = param_1[0xe] + -1;" (assignment_expression "iVar22 = param_1[0xe] + -1" (identifier "iVar22") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xb] = iVar21;" (assignment_expression "param_1[0xb] = iVar21" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "param_1[0xe] = iVar22;" (assignment_expression "param_1[0xe] = iVar22" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);" (assignment_expression "iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44)" (identifier "iVar34") (= "=") (pointer_expression "*(int *)(iVar8 + 0x18 + uVar18 * 0x44)" (* "*") (cast_expression "(int *)(iVar8 + 0x18 + uVar18 * 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18 + uVar18 * 0x44)" (( "(") (binary_expression "iVar8 + 0x18 + uVar18 * 0x44" (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) (+ "+") (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44"))) () ")"))))) (; ";")) (expression_statement "piVar31 = (int *)**(int **)(iVar42 + 0x30);" (assignment_expression "piVar31 = (int *)**(int **)(iVar42 + 0x30)" (identifier "piVar31") (= "=") (cast_expression "(int *)**(int **)(iVar42 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(iVar42 + 0x30)" (* "*") (pointer_expression "*(int **)(iVar42 + 0x30)" (* "*") (cast_expression "(int **)(iVar42 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")"))))))) (; ";")) (expression_statement "iVar42 = piVar31[7];" (assignment_expression "iVar42 = piVar31[7]" (identifier "iVar42") (= "=") (subscript_expression "piVar31[7]" (identifier "piVar31") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0x41;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0x41" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0x41")) (; ";")) (expression_statement "param_5[0xe] = iVar21;" (assignment_expression "param_5[0xe] = iVar21" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (*(byte *)(param_3 + 0xb) < 2) {\n            local_194 = (uint *)param_3[1];\n          }\n          else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" (if "if") (parenthesized_expression "(*(byte *)(param_3 + 0xb) < 2)" (( "(") (binary_expression "*(byte *)(param_3 + 0xb) < 2" (pointer_expression "*(byte *)(param_3 + 0xb)" (* "*") (cast_expression "(byte *)(param_3 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xb)" (( "(") (binary_expression "param_3 + 0xb" (identifier "param_3") (+ "+") (number_literal "0xb")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n            local_194 = (uint *)param_3[1];\n          }" ({ "{") (expression_statement "local_194 = (uint *)param_3[1];" (assignment_expression "local_194 = (uint *)param_3[1]" (identifier "local_194") (= "=") (cast_expression "(uint *)param_3[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" (else "else") (compound_statement "{\n            param_4 = *(byte *)(param_3 + 0xb) - param_4;\n            iVar43 = (param_4 - 1) * 0x44;\n            uVar35 = iVar43 + 0x4c;\n            if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }\n            local_194[1] = param_4 & 0xff;\n            *local_194 = param_4 & 0xff;\n            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);\n            local_194[2] = *puVar28;\n            local_194[0x12] = puVar28[0x10];\n            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));\n            puVar23 = (undefined4 *)((int)puVar28 - iVar41);\n            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);\n            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }\n            iVar41 = param_3[1];\n            if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }\n          }" ({ "{") (expression_statement "param_4 = *(byte *)(param_3 + 0xb) - param_4;" (assignment_expression "param_4 = *(byte *)(param_3 + 0xb) - param_4" (identifier "param_4") (= "=") (binary_expression "*(byte *)(param_3 + 0xb) - param_4" (pointer_expression "*(byte *)(param_3 + 0xb)" (* "*") (cast_expression "(byte *)(param_3 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xb)" (( "(") (binary_expression "param_3 + 0xb" (identifier "param_3") (+ "+") (number_literal "0xb")) () ")")))) (- "-") (identifier "param_4"))) (; ";")) (expression_statement "iVar43 = (param_4 - 1) * 0x44;" (assignment_expression "iVar43 = (param_4 - 1) * 0x44" (identifier "iVar43") (= "=") (binary_expression "(param_4 - 1) * 0x44" (parenthesized_expression "(param_4 - 1)" (( "(") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1")) () ")")) (* "*") (number_literal "0x44"))) (; ";")) (expression_statement "uVar35 = iVar43 + 0x4c;" (assignment_expression "uVar35 = iVar43 + 0x4c" (identifier "uVar35") (= "=") (binary_expression "iVar43 + 0x4c" (identifier "iVar43") (+ "+") (number_literal "0x4c"))) (; ";")) (if_statement "if (iVar41 == 0) {\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }\n            else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" (if "if") (parenthesized_expression "(iVar41 == 0)" (( "(") (binary_expression "iVar41 == 0" (identifier "iVar41") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;\n              if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }\nLAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;\n            }" ({ "{") (if_statement "if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;" (if "if") (parenthesized_expression "((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU))" (( "(") (binary_expression "(uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)" (parenthesized_expression "(uVar35 == 0)" (( "(") (binary_expression "uVar35 == 0" (identifier "uVar35") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(0x7ffffefe < iVar43 + 0x4bU)" (( "(") (binary_expression "0x7ffffefe < iVar43 + 0x4bU" (number_literal "0x7ffffefe") (< "<") (binary_expression "iVar43 + 0x4bU" (identifier "iVar43") (+ "+") (number_literal "0x4bU"))) () ")"))) () ")")) (goto_statement "goto LAB_0009b549;" (goto "goto") (statement_identifier "LAB_0009b549") (; ";"))) (if_statement "if (DAT_00106360 == 0) {\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }\n              else {\n                local_194 = (uint *)FUN_000280e0();\n              }" (if "if") (parenthesized_expression "(DAT_00106360 == 0)" (( "(") (binary_expression "DAT_00106360 == 0" (identifier "DAT_00106360") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_194 = (uint *)(*DAT_00106380)(uVar35);\n              }" ({ "{") (expression_statement "local_194 = (uint *)(*DAT_00106380)(uVar35);" (assignment_expression "local_194 = (uint *)(*DAT_00106380)(uVar35)" (identifier "local_194") (= "=") (cast_expression "(uint *)(*DAT_00106380)(uVar35)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*DAT_00106380)(uVar35)" (parenthesized_expression "(*DAT_00106380)" (( "(") (pointer_expression "*DAT_00106380" (* "*") (identifier "DAT_00106380")) () ")")) (argument_list "(uVar35)" (( "(") (identifier "uVar35") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                local_194 = (uint *)FUN_000280e0();\n              }" (else "else") (compound_statement "{\n                local_194 = (uint *)FUN_000280e0();\n              }" ({ "{") (expression_statement "local_194 = (uint *)FUN_000280e0();" (assignment_expression "local_194 = (uint *)FUN_000280e0()" (identifier "local_194") (= "=") (cast_expression "(uint *)FUN_000280e0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000280e0()" (identifier "FUN_000280e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_0009d302:\n              if (local_194 == (uint *)0x0) goto LAB_0009b549;" (statement_identifier "LAB_0009d302") (: ":") (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009b549;" (if "if") (parenthesized_expression "(local_194 == (uint *)0x0)" (( "(") (binary_expression "local_194 == (uint *)0x0" (identifier "local_194") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009b549;" (goto "goto") (statement_identifier "LAB_0009b549") (; ";")))) (} "}")) (else_clause "else {\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" (else "else") (compound_statement "{\n              if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }\n              if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }\n            }" ({ "{") (if_statement "if (*(ushort *)(iVar41 + 0x114) < uVar35) {\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" (if "if") (parenthesized_expression "(*(ushort *)(iVar41 + 0x114) < uVar35)" (( "(") (binary_expression "*(ushort *)(iVar41 + 0x114) < uVar35" (pointer_expression "*(ushort *)(iVar41 + 0x114)" (* "*") (cast_expression "(ushort *)(iVar41 + 0x114)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x114)" (( "(") (binary_expression "iVar41 + 0x114" (identifier "iVar41") (+ "+") (number_literal "0x114")) () ")")))) (< "<") (identifier "uVar35")) () ")")) (compound_statement "{\n                if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;\nLAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();\n                goto LAB_0009d302;\n              }" ({ "{") (if_statement "if (*(int *)(iVar41 + 0x110) == 0) {\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }\n                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" (if "if") (parenthesized_expression "(*(int *)(iVar41 + 0x110) == 0)" (( "(") (binary_expression "*(int *)(iVar41 + 0x110) == 0" (pointer_expression "*(int *)(iVar41 + 0x110)" (* "*") (cast_expression "(int *)(iVar41 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x110)" (( "(") (binary_expression "iVar41 + 0x110" (identifier "iVar41") (+ "+") (number_literal "0x110")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;\n                }" ({ "{") (expression_statement "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;" (assignment_expression "*(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" (* "*") (cast_expression "(int *)(iVar41 + 0x124)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x124)" (( "(") (binary_expression "iVar41 + 0x124" (identifier "iVar41") (+ "+") (number_literal "0x124")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x124) + 1" (pointer_expression "*(int *)(iVar41 + 0x124)" (* "*") (cast_expression "(int *)(iVar41 + 0x124)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x124)" (( "(") (binary_expression "iVar41 + 0x124" (identifier "iVar41") (+ "+") (number_literal "0x124")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" (else "else") (if_statement "if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;" (if "if") (parenthesized_expression "(*(char *)(iVar41 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar41 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" (* "*") (cast_expression "(char *)(iVar41 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x4d)" (( "(") (binary_expression "iVar41 + 0x4d" (identifier "iVar41") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0009b549;" (goto "goto") (statement_identifier "LAB_0009b549") (; ";"))))) (labeled_statement "LAB_0009d2f9:\n                local_194 = (uint *)FUN_0002eee0();" (statement_identifier "LAB_0009d2f9") (: ":") (expression_statement "local_194 = (uint *)FUN_0002eee0();" (assignment_expression "local_194 = (uint *)FUN_0002eee0()" (identifier "local_194") (= "=") (cast_expression "(uint *)FUN_0002eee0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002eee0()" (identifier "FUN_0002eee0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (goto_statement "goto LAB_0009d302;" (goto "goto") (statement_identifier "LAB_0009d302") (; ";")) (} "}"))) (if_statement "if (uVar35 < 0x81) {\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }\n              else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" (if "if") (parenthesized_expression "(uVar35 < 0x81)" (( "(") (binary_expression "uVar35 < 0x81" (identifier "uVar35") (< "<") (number_literal "0x81")) () ")")) (compound_statement "{\n                local_194 = *(uint **)(iVar41 + 0x138);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }\n              }" ({ "{") (expression_statement "local_194 = *(uint **)(iVar41 + 0x138);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x138)" (identifier "local_194") (= "=") (pointer_expression "*(uint **)(iVar41 + 0x138)" (* "*") (cast_expression "(uint **)(iVar41 + 0x138)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar41 + 0x138)" (( "(") (binary_expression "iVar41 + 0x138" (identifier "iVar41") (+ "+") (number_literal "0x138")) () ")"))))) (; ";")) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" (if "if") (parenthesized_expression "(local_194 == (uint *)0x0)" (( "(") (binary_expression "local_194 == (uint *)0x0" (identifier "local_194") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 0x134);\n                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x134) = uVar35;\n                }" ({ "{") (expression_statement "local_194 = *(uint **)(iVar41 + 0x134);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x134)" (identifier "local_194") (= "=") (pointer_expression "*(uint **)(iVar41 + 0x134)" (* "*") (cast_expression "(uint **)(iVar41 + 0x134)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar41 + 0x134)" (( "(") (binary_expression "iVar41 + 0x134" (identifier "iVar41") (+ "+") (number_literal "0x134")) () ")"))))) (; ";")) (if_statement "if (local_194 == (uint *)0x0) goto LAB_0009d46c;" (if "if") (parenthesized_expression "(local_194 == (uint *)0x0)" (( "(") (binary_expression "local_194 == (uint *)0x0" (identifier "local_194") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0009d46c;" (goto "goto") (statement_identifier "LAB_0009d46c") (; ";"))) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" (identifier "uVar35") (= "=") (pointer_expression "*local_194" (* "*") (identifier "local_194"))) (; ";")) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(iVar41 + 0x134) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x134) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x134)" (* "*") (cast_expression "(uint *)(iVar41 + 0x134)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x134)" (( "(") (binary_expression "iVar41 + 0x134" (identifier "iVar41") (+ "+") (number_literal "0x134")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (} "}")) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" (else "else") (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x138) = uVar35;\n                }" ({ "{") (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" (identifier "uVar35") (= "=") (pointer_expression "*local_194" (* "*") (identifier "local_194"))) (; ";")) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(iVar41 + 0x138) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x138) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x138)" (* "*") (cast_expression "(uint *)(iVar41 + 0x138)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x138)" (( "(") (binary_expression "iVar41 + 0x138" (identifier "iVar41") (+ "+") (number_literal "0x138")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" (else "else") (compound_statement "{\nLAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);\n                if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }\n              }" ({ "{") (labeled_statement "LAB_0009d46c:\n                local_194 = *(uint **)(iVar41 + 0x130);" (statement_identifier "LAB_0009d46c") (: ":") (expression_statement "local_194 = *(uint **)(iVar41 + 0x130);" (assignment_expression "local_194 = *(uint **)(iVar41 + 0x130)" (identifier "local_194") (= "=") (pointer_expression "*(uint **)(iVar41 + 0x130)" (* "*") (cast_expression "(uint **)(iVar41 + 0x130)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar41 + 0x130)" (( "(") (binary_expression "iVar41 + 0x130" (identifier "iVar41") (+ "+") (number_literal "0x130")) () ")"))))) (; ";"))) (if_statement "if (local_194 == (uint *)0x0) {\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }\n                else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" (if "if") (parenthesized_expression "(local_194 == (uint *)0x0)" (( "(") (binary_expression "local_194 == (uint *)0x0" (identifier "local_194") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_194 = *(uint **)(iVar41 + 300);\n                  if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 300) = uVar35;\n                }" ({ "{") (expression_statement "local_194 = *(uint **)(iVar41 + 300);" (assignment_expression "local_194 = *(uint **)(iVar41 + 300)" (identifier "local_194") (= "=") (pointer_expression "*(uint **)(iVar41 + 300)" (* "*") (cast_expression "(uint **)(iVar41 + 300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar41 + 300)" (( "(") (binary_expression "iVar41 + 300" (identifier "iVar41") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (if_statement "if (local_194 == (uint *)0x0) {\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" (if "if") (parenthesized_expression "(local_194 == (uint *)0x0)" (( "(") (binary_expression "local_194 == (uint *)0x0" (identifier "local_194") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;\n                    goto LAB_0009d2f9;\n                  }" ({ "{") (expression_statement "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;" (assignment_expression "*(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" (* "*") (cast_expression "(int *)(iVar41 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x128)" (( "(") (binary_expression "iVar41 + 0x128" (identifier "iVar41") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x128) + 1" (pointer_expression "*(int *)(iVar41 + 0x128)" (* "*") (cast_expression "(int *)(iVar41 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x128)" (( "(") (binary_expression "iVar41 + 0x128" (identifier "iVar41") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0009d2f9;" (goto "goto") (statement_identifier "LAB_0009d2f9") (; ";")) (} "}"))) (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" (identifier "uVar35") (= "=") (pointer_expression "*local_194" (* "*") (identifier "local_194"))) (; ";")) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(iVar41 + 300) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 300) = uVar35" (pointer_expression "*(uint *)(iVar41 + 300)" (* "*") (cast_expression "(uint *)(iVar41 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 300)" (( "(") (binary_expression "iVar41 + 300" (identifier "iVar41") (+ "+") (number_literal "300")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (} "}")) (else_clause "else {\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" (else "else") (compound_statement "{\n                  uVar35 = *local_194;\n                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;\n                  *(uint *)(iVar41 + 0x130) = uVar35;\n                }" ({ "{") (expression_statement "uVar35 = *local_194;" (assignment_expression "uVar35 = *local_194" (identifier "uVar35") (= "=") (pointer_expression "*local_194" (* "*") (identifier "local_194"))) (; ";")) (expression_statement "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;" (assignment_expression "*(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (binary_expression "*(int *)(iVar41 + 0x120) + 1" (pointer_expression "*(int *)(iVar41 + 0x120)" (* "*") (cast_expression "(int *)(iVar41 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x120)" (( "(") (binary_expression "iVar41 + 0x120" (identifier "iVar41") (+ "+") (number_literal "0x120")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(iVar41 + 0x130) = uVar35;" (assignment_expression "*(uint *)(iVar41 + 0x130) = uVar35" (pointer_expression "*(uint *)(iVar41 + 0x130)" (* "*") (cast_expression "(uint *)(iVar41 + 0x130)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x130)" (( "(") (binary_expression "iVar41 + 0x130" (identifier "iVar41") (+ "+") (number_literal "0x130")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (expression_statement "local_194[1] = param_4 & 0xff;" (assignment_expression "local_194[1] = param_4 & 0xff" (subscript_expression "local_194[1]" (identifier "local_194") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_4 & 0xff" (identifier "param_4") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "*local_194 = param_4 & 0xff;" (assignment_expression "*local_194 = param_4 & 0xff" (pointer_expression "*local_194" (* "*") (identifier "local_194")) (= "=") (binary_expression "param_4 & 0xff" (identifier "param_4") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);" (assignment_expression "puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44)" (identifier "puVar28") (= "=") (cast_expression "(uint *)(iVar8 + 8 + uVar18 * 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8 + uVar18 * 0x44)" (( "(") (binary_expression "iVar8 + 8 + uVar18 * 0x44" (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) (+ "+") (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44"))) () ")")))) (; ";")) (expression_statement "local_194[2] = *puVar28;" (assignment_expression "local_194[2] = *puVar28" (subscript_expression "local_194[2]" (identifier "local_194") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";")) (expression_statement "local_194[0x12] = puVar28[0x10];" (assignment_expression "local_194[0x12] = puVar28[0x10]" (subscript_expression "local_194[0x12]" (identifier "local_194") ([ "[") (number_literal "0x12") (] "]")) (= "=") (subscript_expression "puVar28[0x10]" (identifier "puVar28") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));" (assignment_expression "iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" (identifier "iVar41") (= "=") (binary_expression "(int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" (cast_expression "(int)local_194" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_194")) (+ "+") (parenthesized_expression "(8 - (int)((uint)(local_194 + 3) & 0xfffffffc))" (( "(") (binary_expression "8 - (int)((uint)(local_194 + 3) & 0xfffffffc)" (number_literal "8") (- "-") (cast_expression "(int)((uint)(local_194 + 3) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_194 + 3)" (( "(") (binary_expression "local_194 + 3" (identifier "local_194") (+ "+") (number_literal "3")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")")))) (; ";")) (expression_statement "puVar23 = (undefined4 *)((int)puVar28 - iVar41);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar28 - iVar41)" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)((int)puVar28 - iVar41)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 - iVar41)" (( "(") (binary_expression "(int)puVar28 - iVar41" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (- "-") (identifier "iVar41")) () ")")))) (; ";")) (expression_statement "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" (identifier "puVar39") (= "=") (cast_expression "(undefined4 *)((uint)(local_194 + 3) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(local_194 + 3) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_194 + 3) & 0xfffffffc" (call_expression "(uint)(local_194 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_194 + 3)" (( "(") (binary_expression "local_194 + 3" (identifier "local_194") (+ "+") (number_literal "3")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" (for "for") (( "(") (assignment_expression "uVar35 = iVar41 + 0x44U >> 2" (identifier "uVar35") (= "=") (binary_expression "iVar41 + 0x44U >> 2" (binary_expression "iVar41 + 0x44U" (identifier "iVar41") (+ "+") (number_literal "0x44U")) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar35 != 0" (identifier "uVar35") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar35 = uVar35 - 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 - 1" (identifier "uVar35") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n              *puVar39 = *puVar23;\n              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n            }" ({ "{") (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" (* "*") (identifier "puVar39")) (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" (identifier "puVar23") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" (identifier "puVar39") (= "=") (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" (identifier "puVar39") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar41 = param_3[1];" (assignment_expression "iVar41 = param_3[1]" (identifier "iVar41") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (0 < (int)(param_4 - 1)) {\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" (if "if") (parenthesized_expression "(0 < (int)(param_4 - 1))" (( "(") (binary_expression "0 < (int)(param_4 - 1)" (number_literal "0") (< "<") (cast_expression "(int)(param_4 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_4 - 1)" (( "(") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n              pbVar36 = (byte *)(param_5 + 0x22);\n              puVar28 = local_194 + 0x13;\n              do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);\n            }" ({ "{") (expression_statement "pbVar36 = (byte *)(param_5 + 0x22);" (assignment_expression "pbVar36 = (byte *)(param_5 + 0x22)" (identifier "pbVar36") (= "=") (cast_expression "(byte *)(param_5 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x22)" (( "(") (binary_expression "param_5 + 0x22" (identifier "param_5") (+ "+") (number_literal "0x22")) () ")")))) (; ";")) (expression_statement "puVar28 = local_194 + 0x13;" (assignment_expression "puVar28 = local_194 + 0x13" (identifier "puVar28") (= "=") (binary_expression "local_194 + 0x13" (identifier "local_194") (+ "+") (number_literal "0x13"))) (; ";")) (do_statement "do {\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              } while (local_194 + param_4 * 0x11 + 2 != puVar29);" (do "do") (compound_statement "{\n                bVar4 = *pbVar36;\n                pbVar36 = pbVar36 + 0x54;\n                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);\n                *puVar28 = *puVar44;\n                puVar28[0x10] = puVar44[0x10];\n                puVar29 = puVar28 + 0x11;\n                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);\n                puVar23 = (undefined4 *)((int)puVar44 - iVar43);\n                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);\n                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }\n                puVar28 = puVar29;\n              }" ({ "{") (expression_statement "bVar4 = *pbVar36;" (assignment_expression "bVar4 = *pbVar36" (identifier "bVar4") (= "=") (pointer_expression "*pbVar36" (* "*") (identifier "pbVar36"))) (; ";")) (expression_statement "pbVar36 = pbVar36 + 0x54;" (assignment_expression "pbVar36 = pbVar36 + 0x54" (identifier "pbVar36") (= "=") (binary_expression "pbVar36 + 0x54" (identifier "pbVar36") (+ "+") (number_literal "0x54"))) (; ";")) (expression_statement "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);" (assignment_expression "puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" (identifier "puVar44") (= "=") (cast_expression "(uint *)((uint)bVar4 * 0x44 + iVar41 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)bVar4 * 0x44 + iVar41 + 8)" (( "(") (binary_expression "(uint)bVar4 * 0x44 + iVar41 + 8" (binary_expression "(uint)bVar4 * 0x44 + iVar41" (binary_expression "(uint)bVar4 * 0x44" (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4")) (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar41")) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*puVar28 = *puVar44;" (assignment_expression "*puVar28 = *puVar44" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (= "=") (pointer_expression "*puVar44" (* "*") (identifier "puVar44"))) (; ";")) (expression_statement "puVar28[0x10] = puVar44[0x10];" (assignment_expression "puVar28[0x10] = puVar44[0x10]" (subscript_expression "puVar28[0x10]" (identifier "puVar28") ([ "[") (number_literal "0x10") (] "]")) (= "=") (subscript_expression "puVar44[0x10]" (identifier "puVar44") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "puVar29 = puVar28 + 0x11;" (assignment_expression "puVar29 = puVar28 + 0x11" (identifier "puVar29") (= "=") (binary_expression "puVar28 + 0x11" (identifier "puVar28") (+ "+") (number_literal "0x11"))) (; ";")) (expression_statement "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" (identifier "iVar43") (= "=") (binary_expression "(int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc)" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (- "-") (cast_expression "(int)((uint)(puVar28 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar28 + 1)" (( "(") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")"))))) (; ";")) (expression_statement "puVar23 = (undefined4 *)((int)puVar44 - iVar43);" (assignment_expression "puVar23 = (undefined4 *)((int)puVar44 - iVar43)" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)((int)puVar44 - iVar43)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar44 - iVar43)" (( "(") (binary_expression "(int)puVar44 - iVar43" (cast_expression "(int)puVar44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar44")) (- "-") (identifier "iVar43")) () ")")))) (; ";")) (expression_statement "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);" (assignment_expression "puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" (identifier "puVar39") (= "=") (cast_expression "(undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar28 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar28 + 1) & 0xfffffffc" (call_expression "(uint)(puVar28 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar28 + 1)" (( "(") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" (for "for") (( "(") (assignment_expression "uVar35 = iVar43 + 0x44U >> 2" (identifier "uVar35") (= "=") (binary_expression "iVar43 + 0x44U >> 2" (binary_expression "iVar43 + 0x44U" (identifier "iVar43") (+ "+") (number_literal "0x44U")) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar35 != 0" (identifier "uVar35") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar35 = uVar35 - 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 - 1" (identifier "uVar35") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                  *puVar39 = *puVar23;\n                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;\n                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;\n                }" ({ "{") (expression_statement "*puVar39 = *puVar23;" (assignment_expression "*puVar39 = *puVar23" (pointer_expression "*puVar39" (* "*") (identifier "puVar39")) (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (expression_statement "puVar23 = puVar23 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar23 = puVar23 + (uint)bVar16 * -2 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar23 + (uint)bVar16 * -2 + 1" (binary_expression "puVar23 + (uint)bVar16 * -2" (identifier "puVar23") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar39 = puVar39 + (uint)bVar16 * -2 + 1;" (assignment_expression "puVar39 = puVar39 + (uint)bVar16 * -2 + 1" (identifier "puVar39") (= "=") (binary_expression "puVar39 + (uint)bVar16 * -2 + 1" (binary_expression "puVar39 + (uint)bVar16 * -2" (identifier "puVar39") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar28 = puVar29;" (assignment_expression "puVar28 = puVar29" (identifier "puVar28") (= "=") (identifier "puVar29")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_194 + param_4 * 0x11 + 2 != puVar29)" (( "(") (binary_expression "local_194 + param_4 * 0x11 + 2 != puVar29" (binary_expression "local_194 + param_4 * 0x11 + 2" (binary_expression "local_194 + param_4 * 0x11" (identifier "local_194") (+ "+") (binary_expression "param_4 * 0x11" (identifier "param_4") (* "*") (number_literal "0x11"))) (+ "+") (number_literal "2")) (!= "!=") (identifier "puVar29")) () ")")) (; ";")) (} "}"))) (} "}")))) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }\n          else {\n            local_140 = 0;\n          }" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" (( "(") (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" (* "*") (cast_expression "(byte *)(param_3 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }\n            iVar41 = param_1[0xb];\n            param_1[0xb] = iVar41 + 1;\n            FUN_00049630(iVar41 + 1);\nLAB_0009b879:\n            local_140 = param_1[0xb] + 1;\n            param_1[0xb] = local_140;\n          }" ({ "{") (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" (if "if") (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" (( "(") (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" (( "(") (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" (* "*") (cast_expression "(byte *)(iVar34 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x24)" (( "(") (binary_expression "iVar34 + 0x24" (identifier "iVar34") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }\n              param_1[10] = param_1[10] + 1;\n              goto LAB_0009ca50;\n            }" ({ "{") (for_statement "for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" (for "for") (( "(") (assignment_expression "iVar41 = *(int *)(iVar34 + 8)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(iVar34 + 8)" (* "*") (cast_expression "(int *)(iVar34 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 8)" (( "(") (binary_expression "iVar34 + 8" (identifier "iVar34") (+ "+") (number_literal "8")) () ")"))))) (; ";") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar41 = *(int *)(iVar41 + 0x14)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(iVar41 + 0x14)" (* "*") (cast_expression "(int *)(iVar41 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x14)" (( "(") (binary_expression "iVar41 + 0x14" (identifier "iVar41") (+ "+") (number_literal "0x14")) () ")"))))) () ")") (compound_statement "{\n                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }\n              }" ({ "{") (if_statement "if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" (if "if") (parenthesized_expression "((*(byte *)(iVar41 + 0x37) & 3) == 2)" (( "(") (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" (* "*") (cast_expression "(byte *)(iVar41 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x37)" (( "(") (binary_expression "iVar41 + 0x37" (identifier "iVar41") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                  param_1[10] = param_1[10] + 1;\n                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));\n                  FUN_00051750();\n                  goto LAB_0009b879;\n                }" ({ "{") (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00049630(*(undefined2 *)(iVar41 + 0x32));" (call_expression "FUN_00049630(*(undefined2 *)(iVar41 + 0x32))" (identifier "FUN_00049630") (argument_list "(*(undefined2 *)(iVar41 + 0x32))" (( "(") (pointer_expression "*(undefined2 *)(iVar41 + 0x32)" (* "*") (cast_expression "(undefined2 *)(iVar41 + 0x32)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x32)" (( "(") (binary_expression "iVar41 + 0x32" (identifier "iVar41") (+ "+") (number_literal "0x32")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00051750();" (call_expression "FUN_00051750()" (identifier "FUN_00051750") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_0009b879;" (goto "goto") (statement_identifier "LAB_0009b879") (; ";")) (} "}"))) (} "}"))) (expression_statement "param_1[10] = param_1[10] + 1;" (assignment_expression "param_1[10] = param_1[10] + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "param_1[10] + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0009ca50;" (goto "goto") (statement_identifier "LAB_0009ca50") (; ";")) (} "}"))) (expression_statement "iVar41 = param_1[0xb];" (assignment_expression "iVar41 = param_1[0xb]" (identifier "iVar41") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "param_1[0xb] = iVar41 + 1;" (assignment_expression "param_1[0xb] = iVar41 + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar41 + 1" (identifier "iVar41") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00049630(iVar41 + 1);" (call_expression "FUN_00049630(iVar41 + 1)" (identifier "FUN_00049630") (argument_list "(iVar41 + 1)" (( "(") (binary_expression "iVar41 + 1" (identifier "iVar41") (+ "+") (number_literal "1")) () ")"))) (; ";")) (labeled_statement "LAB_0009b879:\n            local_140 = param_1[0xb] + 1;" (statement_identifier "LAB_0009b879") (: ":") (expression_statement "local_140 = param_1[0xb] + 1;" (assignment_expression "local_140 = param_1[0xb] + 1" (identifier "local_140") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_1[0xb] = local_140;" (assignment_expression "param_1[0xb] = local_140" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_140")) (; ";")) (} "}")) (else_clause "else {\n            local_140 = 0;\n          }" (else "else") (compound_statement "{\n            local_140 = 0;\n          }" ({ "{") (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" (identifier "local_140") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" (identifier "iVar43") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = FUN_00049630(iVar21);" (assignment_expression "iVar21 = FUN_00049630(iVar21)" (identifier "iVar21") (= "=") (call_expression "FUN_00049630(iVar21)" (identifier "FUN_00049630") (argument_list "(iVar21)" (( "(") (identifier "iVar21") () ")")))) (; ";")) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (if_statement "if (iVar41 < 2) {\nLAB_0009d0ac:\n            local_134 = 0;\n          }\n          else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" (if "if") (parenthesized_expression "(iVar41 < 2)" (( "(") (binary_expression "iVar41 < 2" (identifier "iVar41") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0009d0ac:\n            local_134 = 0;\n          }" ({ "{") (labeled_statement "LAB_0009d0ac:\n            local_134 = 0;" (statement_identifier "LAB_0009d0ac") (: ":") (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" (identifier "local_134") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" (else "else") (compound_statement "{\n            do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);\n            if (iVar43 == 0) goto LAB_0009d0ac;\n            local_134 = FUN_000556e0();\n          }" ({ "{") (do_statement "do {\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            } while (iVar27 < iVar41);" (do "do") (compound_statement "{\n              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);\n              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }\n              iVar27 = iVar27 + 1;\n            }" ({ "{") (expression_statement "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);" (assignment_expression "piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17])" (identifier "piVar24") (= "=") (cast_expression "(int *)(iVar27 * 0x30 + param_3[0x17])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 * 0x30 + param_3[0x17])" (( "(") (binary_expression "iVar27 * 0x30 + param_3[0x17]" (binary_expression "iVar27 * 0x30" (identifier "iVar27") (* "*") (number_literal "0x30")) (+ "+") (subscript_expression "param_3[0x17]" (identifier "param_3") ([ "[") (number_literal "0x17") (] "]"))) () ")")))) (; ";")) (if_statement "if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" (if "if") (parenthesized_expression "(((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0))" (( "(") (binary_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&\n                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" (parenthesized_expression "((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0))" (( "(") (binary_expression "(piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)" (parenthesized_expression "(piVar24 != piVar31)" (( "(") (binary_expression "piVar24 != piVar31" (identifier "piVar24") (!= "!=") (identifier "piVar31")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)piVar24 + 10) & 6) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar24 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 10) & 6)" (( "(") (binary_expression "*(byte *)((int)piVar24 + 10) & 6" (pointer_expression "*(byte *)((int)piVar24 + 10)" (* "*") (cast_expression "(byte *)((int)piVar24 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + 10)" (( "(") (binary_expression "(int)piVar24 + 10" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "6")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)" (( "(") (binary_expression "(*(ushort *)(piVar24 + 3) & 0x1fff) != 0" (parenthesized_expression "(*(ushort *)(piVar24 + 3) & 0x1fff)" (( "(") (binary_expression "*(ushort *)(piVar24 + 3) & 0x1fff" (pointer_expression "*(ushort *)(piVar24 + 3)" (* "*") (cast_expression "(ushort *)(piVar24 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar24 + 3)" (( "(") (binary_expression "piVar24 + 3" (identifier "piVar24") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x1fff")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }\n                iVar43 = FUN_000559f0();\n                iVar41 = param_3[0x15];\n              }" ({ "{") (if_statement "if (*piVar24 != 0) {\n                  FUN_0005dca0();\n                }" (if "if") (parenthesized_expression "(*piVar24 != 0)" (( "(") (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_0005dca0();\n                }" ({ "{") (expression_statement "FUN_0005dca0();" (call_expression "FUN_0005dca0()" (identifier "FUN_0005dca0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar43 = FUN_000559f0();" (assignment_expression "iVar43 = FUN_000559f0()" (identifier "iVar43") (= "=") (call_expression "FUN_000559f0()" (identifier "FUN_000559f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 < iVar41)" (( "(") (binary_expression "iVar27 < iVar41" (identifier "iVar27") (< "<") (identifier "iVar41")) () ")")) (; ";")) (if_statement "if (iVar43 == 0) goto LAB_0009d0ac;" (if "if") (parenthesized_expression "(iVar43 == 0)" (( "(") (binary_expression "iVar43 == 0" (identifier "iVar43") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009d0ac;" (goto "goto") (statement_identifier "LAB_0009d0ac") (; ";"))) (expression_statement "local_134 = FUN_000556e0();" (assignment_expression "local_134 = FUN_000556e0()" (identifier "local_134") (= "=") (call_expression "FUN_000556e0()" (identifier "FUN_000556e0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar32 = *(ushort *)(param_3 + 10);" (assignment_expression "uVar32 = *(ushort *)(param_3 + 10)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)(param_3 + 10)" (* "*") (cast_expression "(ushort *)(param_3 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "FUN_000496a0(param_1,1,"MULTI-INDEX OR");" (call_expression "FUN_000496a0(param_1,1,"MULTI-INDEX OR")" (identifier "FUN_000496a0") (argument_list "(param_1,1,"MULTI-INDEX OR")" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (string_literal ""MULTI-INDEX OR"" (" """) (string_content "MULTI-INDEX OR") (" """)) () ")"))) (; ";")) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(iVar42 + 0xc)" (* "*") (cast_expression "(int *)(iVar42 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0xc)" (( "(") (binary_expression "iVar42 + 0xc" (identifier "iVar42") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar41 < 1) {\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }\n          else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" (if "if") (parenthesized_expression "(iVar41 < 1)" (( "(") (binary_expression "iVar41 < 1" (identifier "iVar41") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }\n            param_5[0x10] = 0;\n            bVar48 = false;\n          }" ({ "{") (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" (identifier "iVar41") (= "=") (subscript_expression "param_1[0x36]" (identifier "param_1") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" (if "if") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar31 = (int *)param_1[2];\n              local_13c = 0;\n              bVar48 = false;\n              goto LAB_0009cb9d;\n            }" ({ "{") (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" (identifier "local_13c") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0009cb9d;" (goto "goto") (statement_identifier "LAB_0009cb9d") (; ";")) (} "}"))) (expression_statement "param_5[0x10] = 0;" (assignment_expression "param_5[0x10] = 0" (subscript_expression "param_5[0x10]" (identifier "param_5") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" (else "else") (compound_statement "{\n            bVar48 = false;\n            local_13c = 0;\n            iVar43 = 0;\n            do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);\n            iVar41 = param_1[0x36];\n            if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }\n            param_1[0x36] = iVar41;\n            param_5[0x10] = local_13c;\n            if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }\n          }" ({ "{") (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" (identifier "local_13c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" (identifier "iVar43") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            } while (iVar27 < iVar41);" (do "do") (compound_statement "{\n              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));\n              iVar27 = iVar43 + 1;\n              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }\n              iVar43 = iVar27;\n            }" ({ "{") (expression_statement "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));" (assignment_expression "puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 * 0x30 + *(int *)(iVar42 + 0x14))" (( "(") (binary_expression "iVar43 * 0x30 + *(int *)(iVar42 + 0x14)" (binary_expression "iVar43 * 0x30" (identifier "iVar43") (* "*") (number_literal "0x30")) (+ "+") (pointer_expression "*(int *)(iVar42 + 0x14)" (* "*") (cast_expression "(int *)(iVar42 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x14)" (( "(") (binary_expression "iVar42 + 0x14" (identifier "iVar42") (+ "+") (number_literal "0x14")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar27 = iVar43 + 1;" (assignment_expression "iVar27 = iVar43 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar43 + 1" (identifier "iVar43") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" (if "if") (parenthesized_expression "((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0))" (( "(") (binary_expression "(puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" (parenthesized_expression "(puVar23[5] == iVar9)" (( "(") (binary_expression "puVar23[5] == iVar9" (subscript_expression "puVar23[5]" (identifier "puVar23") ([ "[") (number_literal "5") (] "]")) (== "==") (identifier "iVar9")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((int)puVar23 + 0xd) & 4) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar23 + 0xd) & 4) != 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 0xd) & 4)" (( "(") (binary_expression "*(byte *)((int)puVar23 + 0xd) & 4" (pointer_expression "*(byte *)((int)puVar23 + 0xd)" (* "*") (cast_expression "(byte *)((int)puVar23 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 0xd)" (( "(") (binary_expression "(int)puVar23 + 0xd" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }\n                FUN_000496a0(param_1,1,"INDEX %d",iVar27);\n                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);\n                if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }\n                iVar41 = *(int *)(iVar42 + 0xc);\n              }" ({ "{") (if_statement "if (local_134 != 0) {\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" (if "if") (parenthesized_expression "(local_134 != 0)" (( "(") (binary_expression "local_134 != 0" (identifier "local_134") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(undefined4 *)(local_134 + 0xc) = *puVar23;\n                }" ({ "{") (expression_statement "*(undefined4 *)(local_134 + 0xc) = *puVar23;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = *puVar23" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" (* "*") (cast_expression "(undefined4 *)(local_134 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_134 + 0xc)" (( "(") (binary_expression "local_134 + 0xc" (identifier "local_134") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (} "}"))) (expression_statement "FUN_000496a0(param_1,1,"INDEX %d",iVar27);" (call_expression "FUN_000496a0(param_1,1,"INDEX %d",iVar27)" (identifier "FUN_000496a0") (argument_list "(param_1,1,"INDEX %d",iVar27)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (string_literal ""INDEX %d"" (" """) (string_content "INDEX %d") (" """)) (, ",") (identifier "iVar27") () ")"))) (; ";")) (expression_statement "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);" (assignment_expression "iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" (identifier "iVar41") (= "=") (call_expression "FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20)" (identifier "FUN_0009d580") (argument_list "(0,0,uVar32 & 0x400 | 0x20,iVar20)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "uVar32 & 0x400 | 0x20" (binary_expression "uVar32 & 0x400" (identifier "uVar32") (& "&") (number_literal "0x400")) (| "|") (number_literal "0x20")) (, ",") (identifier "iVar20") () ")")))) (; ";")) (if_statement "if (iVar41 != 0) {\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" (if "if") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  piVar31 = (int *)param_1[0x1d];\n                  if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }\n                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }\n                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }\n                  bVar13 = true;\n                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }\n                  bVar48 = bVar13;\n                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }\n                  FUN_00069230();\n                  iVar41 = param_1[0x36];\n                  if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }\n                  param_1[0x36] = iVar41;\n                }" ({ "{") (expression_statement "piVar31 = (int *)param_1[0x1d];" (assignment_expression "piVar31 = (int *)param_1[0x1d]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n                    piVar31 = param_1;\n                  }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    piVar31 = param_1;\n                  }" ({ "{") (expression_statement "piVar31 = param_1;" (assignment_expression "piVar31 = param_1" (identifier "piVar31") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)piVar31 + 0xcb) == '\x02') {\n                    FUN_0005ac00(0);\n                  }" (if "if") (parenthesized_expression "(*(char *)((int)piVar31 + 0xcb) == '\x02')" (( "(") (binary_expression "*(char *)((int)piVar31 + 0xcb) == '\x02'" (pointer_expression "*(char *)((int)piVar31 + 0xcb)" (* "*") (cast_expression "(char *)((int)piVar31 + 0xcb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 0xcb)" (( "(") (binary_expression "(int)piVar31 + 0xcb" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "0xcb")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n                    FUN_0005ac00(0);\n                  }" ({ "{") (expression_statement "FUN_0005ac00(0);" (call_expression "FUN_0005ac00(0)" (identifier "FUN_0005ac00") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_3 + 10) & 0x10) == 0) {\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }\n                  else {\n                    FUN_00049630(iVar22);\n                  }" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 10) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x10)" (( "(") (binary_expression "*(byte *)(param_3 + 10) & 0x10" (pointer_expression "*(byte *)(param_3 + 10)" (* "*") (cast_expression "(byte *)(param_3 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }\n                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }\n                    FUN_00049630(iVar22);\n                    if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }\n                  }" ({ "{") (if_statement "if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {\n                      iVar43 = -1;\n                    }" (if "if") (parenthesized_expression "(*(int *)(iVar42 + 0xc) + -1 == iVar43)" (( "(") (binary_expression "*(int *)(iVar42 + 0xc) + -1 == iVar43" (binary_expression "*(int *)(iVar42 + 0xc) + -1" (pointer_expression "*(int *)(iVar42 + 0xc)" (* "*") (cast_expression "(int *)(iVar42 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0xc)" (( "(") (binary_expression "iVar42 + 0xc" (identifier "iVar42") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "-1")) (== "==") (identifier "iVar43")) () ")")) (compound_statement "{\n                      iVar43 = -1;\n                    }" ({ "{") (expression_statement "iVar43 = -1;" (assignment_expression "iVar43 = -1" (identifier "iVar43") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }\n                    else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" (if "if") (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" (( "(") (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" (* "*") (cast_expression "(byte *)(iVar34 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x24)" (( "(") (binary_expression "iVar34 + 0x24" (identifier "iVar34") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_00095620(0xffffffff,local_140);\n                      iVar25 = FUN_000493f0(0,local_140);\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }\n                    }" ({ "{") (expression_statement "FUN_00095620(0xffffffff,local_140);" (call_expression "FUN_00095620(0xffffffff,local_140)" (identifier "FUN_00095620") (argument_list "(0xffffffff,local_140)" (( "(") (number_literal "0xffffffff") (, ",") (identifier "local_140") () ")"))) (; ";")) (expression_statement "iVar25 = FUN_000493f0(0,local_140);" (assignment_expression "iVar25 = FUN_000493f0(0,local_140)" (identifier "iVar25") (= "=") (call_expression "FUN_000493f0(0,local_140)" (identifier "FUN_000493f0") (argument_list "(0,local_140)" (( "(") (number_literal "0") (, ",") (identifier "local_140") () ")")))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        iVar2 = param_2[0x19] + iVar25 * 0x14;\n                        *(undefined1 *)(iVar2 + 1) = 0xfd;\n                        *(int *)(iVar2 + 0x10) = iVar43;\n                      }" ({ "{") (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" (identifier "iVar2") (= "=") (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar25 * 0x14" (identifier "iVar25") (* "*") (number_literal "0x14")))) (; ";")) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" (* "*") (cast_expression "(undefined1 *)(iVar2 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xfd")) (; ";")) (expression_statement "*(int *)(iVar2 + 0x10) = iVar43;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar43" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar43")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" (else "else") (compound_statement "{\n                      iVar2 = *(int *)(iVar34 + 8);\n                      while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }\n                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);\n                      iVar30 = FUN_00025510();\n                      if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }\n                      if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }\n                      if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }\n                    }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar34 + 8);" (assignment_expression "iVar2 = *(int *)(iVar34 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar34 + 8)" (* "*") (cast_expression "(int *)(iVar34 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 8)" (( "(") (binary_expression "iVar34 + 8" (identifier "iVar34") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (while_statement "while( true ) {\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                        if (iVar2 == 0) goto LAB_0009ca50;\n                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;\n                        iVar2 = *(int *)(iVar2 + 0x14);\n                      }" ({ "{") (if_statement "if (iVar2 == 0) goto LAB_0009ca50;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009ca50;" (goto "goto") (statement_identifier "LAB_0009ca50") (; ";"))) (if_statement "if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x37) & 3) == 2)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)(iVar2 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x37) & 3" (pointer_expression "*(byte *)(iVar2 + 0x37)" (* "*") (cast_expression "(byte *)(iVar2 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x37)" (( "(") (binary_expression "iVar2 + 0x37" (identifier "iVar2") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = *(int *)(iVar2 + 0x14);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 0x14)" (* "*") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar35 = (uint)*(ushort *)(iVar2 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar2 + 0x32)" (identifier "uVar35") (= "=") (binary_expression "(uint)*(ushort *)(iVar2 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar2 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x32)" (( "(") (binary_expression "iVar2 + 0x32" (identifier "iVar2") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (expression_statement "iVar30 = FUN_00025510();" (assignment_expression "iVar30 = FUN_00025510()" (identifier "iVar30") (= "=") (call_expression "FUN_00025510()" (identifier "FUN_00025510") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar35 != 0) {\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" (if "if") (parenthesized_expression "(uVar35 != 0)" (( "(") (binary_expression "uVar35 != 0" (identifier "uVar35") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar46 = 0;\n                        iVar25 = iVar30;\n                        do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);\n                      }" ({ "{") (expression_statement "iVar46 = 0;" (assignment_expression "iVar46 = 0" (identifier "iVar46") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar25 = iVar30;" (assignment_expression "iVar25 = iVar30" (identifier "iVar25") (= "=") (identifier "iVar30")) (; ";")) (do_statement "do {\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        } while (uVar35 * 2 != iVar46);" (do "do") (compound_statement "{\n                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);\n                          iVar46 = iVar46 + 2;\n                          FUN_00095620((int)*psVar3,iVar25);\n                          iVar25 = iVar25 + 1;\n                        }" ({ "{") (expression_statement "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);" (assignment_expression "psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46)" (identifier "psVar3") (= "=") (cast_expression "(short *)(*(int *)(iVar2 + 4) + iVar46)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 4) + iVar46)" (( "(") (binary_expression "*(int *)(iVar2 + 4) + iVar46" (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "iVar46")) () ")")))) (; ";")) (expression_statement "iVar46 = iVar46 + 2;" (assignment_expression "iVar46 = iVar46 + 2" (identifier "iVar46") (= "=") (binary_expression "iVar46 + 2" (identifier "iVar46") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_00095620((int)*psVar3,iVar25);" (call_expression "FUN_00095620((int)*psVar3,iVar25)" (identifier "FUN_00095620") (argument_list "((int)*psVar3,iVar25)" (( "(") (cast_expression "(int)*psVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*psVar3" (* "*") (identifier "psVar3"))) (, ",") (identifier "iVar25") () ")"))) (; ";")) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar25 + 1" (identifier "iVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar35 * 2 != iVar46)" (( "(") (binary_expression "uVar35 * 2 != iVar46" (binary_expression "uVar35 * 2" (identifier "uVar35") (* "*") (number_literal "2")) (!= "!=") (identifier "iVar46")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar43 == 0) {\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }\n                      else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" (if "if") (parenthesized_expression "(iVar43 == 0)" (( "(") (binary_expression "iVar43 == 0" (identifier "iVar43") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        FUN_000493f0(uVar35,local_140);\n                        iVar25 = 0;\n                        FUN_00068470(local_140,iVar30,uVar35);\n                      }" ({ "{") (expression_statement "FUN_000493f0(uVar35,local_140);" (call_expression "FUN_000493f0(uVar35,local_140)" (identifier "FUN_000493f0") (argument_list "(uVar35,local_140)" (( "(") (identifier "uVar35") (, ",") (identifier "local_140") () ")"))) (; ";")) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" (identifier "iVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" (identifier "FUN_00068470") (argument_list "(local_140,iVar30,uVar35)" (( "(") (identifier "local_140") (, ",") (identifier "iVar30") (, ",") (identifier "uVar35") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" (else "else") (compound_statement "{\n                        iVar25 = FUN_000493f0(0,iVar30);\n                        iVar2 = *param_2;\n                        if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }\n                        if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }\n                      }" ({ "{") (expression_statement "iVar25 = FUN_000493f0(0,iVar30);" (assignment_expression "iVar25 = FUN_000493f0(0,iVar30)" (identifier "iVar25") (= "=") (call_expression "FUN_000493f0(0,iVar30)" (identifier "FUN_000493f0") (argument_list "(0,iVar30)" (( "(") (number_literal "0") (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" (identifier "iVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (*(char *)(iVar2 + 0x4d) == '\0') {\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar2 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x4d)" (* "*") (cast_expression "(char *)(iVar2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x4d)" (( "(") (binary_expression "iVar2 + 0x4d" (identifier "iVar2") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                          iVar2 = param_2[0x19] + iVar25 * 0x14;\n                          *(undefined1 *)(iVar2 + 1) = 0xfd;\n                          *(uint *)(iVar2 + 0x10) = uVar35;\n                        }" ({ "{") (expression_statement "iVar2 = param_2[0x19] + iVar25 * 0x14;" (assignment_expression "iVar2 = param_2[0x19] + iVar25 * 0x14" (identifier "iVar2") (= "=") (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar25 * 0x14" (identifier "iVar25") (* "*") (number_literal "0x14")))) (; ";")) (expression_statement "*(undefined1 *)(iVar2 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar2 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar2 + 1)" (* "*") (cast_expression "(undefined1 *)(iVar2 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xfd")) (; ";")) (expression_statement "*(uint *)(iVar2 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar2 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar2 + 0x10)" (* "*") (cast_expression "(uint *)(iVar2 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (} "}"))) (if_statement "if (-1 < iVar43) {\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" (if "if") (parenthesized_expression "(-1 < iVar43)" (( "(") (binary_expression "-1 < iVar43" (number_literal "-1") (< "<") (identifier "iVar43")) () ")")) (compound_statement "{\n                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);\n                          FUN_00068470(local_140,iVar30,uVar35);\n                          if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }\n                        }" ({ "{") (expression_statement "FUN_000493f0(uVar35,local_140,iVar2,iVar2);" (call_expression "FUN_000493f0(uVar35,local_140,iVar2,iVar2)" (identifier "FUN_000493f0") (argument_list "(uVar35,local_140,iVar2,iVar2)" (( "(") (identifier "uVar35") (, ",") (identifier "local_140") (, ",") (identifier "iVar2") (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "FUN_00068470(local_140,iVar30,uVar35);" (call_expression "FUN_00068470(local_140,iVar30,uVar35)" (identifier "FUN_00068470") (argument_list "(local_140,iVar30,uVar35)" (( "(") (identifier "local_140") (, ",") (identifier "iVar30") (, ",") (identifier "uVar35") () ")"))) (; ";")) (if_statement "if (0 < param_2[0x1a]) {\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" (if "if") (parenthesized_expression "(0 < param_2[0x1a])" (( "(") (binary_expression "0 < param_2[0x1a]" (number_literal "0") (< "<") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;\n                          }" ({ "{") (expression_statement "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12)" (( "(") (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14 + -0x12" (binary_expression "param_2[0x19] + param_2[0x1a] * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "param_2[0x1a] * 0x14" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "0x10")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (uVar35 == 1) {\n                        FUN_00029ad0();\n                      }\n                      else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" (if "if") (parenthesized_expression "(uVar35 == 1)" (( "(") (binary_expression "uVar35 == 1" (identifier "uVar35") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                        FUN_00029ad0();\n                      }" ({ "{") (expression_statement "FUN_00029ad0();" (call_expression "FUN_00029ad0()" (identifier "FUN_00029ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" (else "else") (if_statement "if (param_1[7] < (int)uVar35) {\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" (if "if") (parenthesized_expression "(param_1[7] < (int)uVar35)" (( "(") (binary_expression "param_1[7] < (int)uVar35" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (< "<") (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35"))) () ")")) (compound_statement "{\n                        param_1[7] = uVar35;\n                        param_1[8] = iVar30;\n                      }" ({ "{") (expression_statement "param_1[7] = uVar35;" (assignment_expression "param_1[7] = uVar35" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "param_1[8] = iVar30;" (assignment_expression "param_1[8] = iVar30" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar30")) (; ";")) (} "}"))))) (} "}")))) (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" (identifier "FUN_00049630") (argument_list "(iVar22)" (( "(") (identifier "iVar22") () ")"))) (; ";")) (if_statement "if (iVar25 != 0) {\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" (if "if") (parenthesized_expression "(iVar25 != 0)" (( "(") (binary_expression "iVar25 != 0" (identifier "iVar25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }\n                      puVar26 = &DAT_001075d0;\n                      if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }\n                      *(int *)(puVar26 + 8) = param_2[0x1a];\n                    }" ({ "{") (if_statement "if (iVar25 < 0) {\n                        iVar25 = param_2[0x1a] + -1;\n                      }" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar25 = param_2[0x1a] + -1;\n                      }" ({ "{") (expression_statement "iVar25 = param_2[0x1a] + -1;" (assignment_expression "iVar25 = param_2[0x1a] + -1" (identifier "iVar25") (= "=") (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);\n                      }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + iVar25 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + iVar25 * 0x14)" (( "(") (binary_expression "param_2[0x19] + iVar25 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar25 * 0x14" (identifier "iVar25") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" (* "*") (cast_expression "(int *)(puVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    FUN_00049630(iVar22);\n                  }" (else "else") (compound_statement "{\n                    FUN_00049630(iVar22);\n                  }" ({ "{") (expression_statement "FUN_00049630(iVar22);" (call_expression "FUN_00049630(iVar22)" (identifier "FUN_00049630") (argument_list "(iVar22)" (( "(") (identifier "iVar22") () ")"))) (; ";")) (} "}")))) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" (identifier "bVar13") (= "=") (true "true")) (; ";")) (if_statement "if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {\n                    bVar13 = bVar48;\n                  }" (if "if") (parenthesized_expression "((*(byte *)(iVar41 + 0x30) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar41 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar41 + 0x30) & 2)" (( "(") (binary_expression "*(byte *)(iVar41 + 0x30) & 2" (pointer_expression "*(byte *)(iVar41 + 0x30)" (* "*") (cast_expression "(byte *)(iVar41 + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x30)" (( "(") (binary_expression "iVar41 + 0x30" (identifier "iVar41") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    bVar13 = bVar48;\n                  }" ({ "{") (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" (identifier "bVar13") (= "=") (identifier "bVar48")) (; ";")) (} "}"))) (expression_statement "bVar48 = bVar13;" (assignment_expression "bVar48 = bVar13" (identifier "bVar48") (= "=") (identifier "bVar13")) (; ";")) (if_statement "if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))) {\n                    local_13c = 0;\n                  }\n                  else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" (if "if") (parenthesized_expression "(((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))))" (( "(") (binary_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||\n                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" (parenthesized_expression "((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2" (pointer_expression "*(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" (* "*") (cast_expression "(byte *)(*(int *)(iVar41 + 0x330) + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x25)" (( "(") (binary_expression "*(int *)(iVar41 + 0x330) + 0x25" (pointer_expression "*(int *)(iVar41 + 0x330)" (* "*") (cast_expression "(int *)(iVar41 + 0x330)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x330)" (( "(") (binary_expression "iVar41 + 0x330" (identifier "iVar41") (+ "+") (number_literal "0x330")) () ")")))) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)))" (( "(") (parenthesized_expression "(iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41))" (( "(") (comma_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&\n                      (local_13c != iVar41)" (assignment_expression "iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(*(int *)(iVar41 + 0x330) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(iVar41 + 0x330) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar41 + 0x330) + 0x20)" (( "(") (binary_expression "*(int *)(iVar41 + 0x330) + 0x20" (pointer_expression "*(int *)(iVar41 + 0x330)" (* "*") (cast_expression "(int *)(iVar41 + 0x330)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x330)" (( "(") (binary_expression "iVar41 + 0x330" (identifier "iVar41") (+ "+") (number_literal "0x330")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (, ",") (binary_expression "iVar27 != 1 &&\n                      (local_13c != iVar41)" (binary_expression "iVar27 != 1" (identifier "iVar27") (!= "!=") (number_literal "1")) (&& "&&") (parenthesized_expression "(local_13c != iVar41)" (( "(") (binary_expression "local_13c != iVar41" (identifier "local_13c") (!= "!=") (identifier "iVar41")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n                    local_13c = 0;\n                  }" ({ "{") (expression_statement "local_13c = 0;" (assignment_expression "local_13c = 0" (identifier "local_13c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" (else "else") (compound_statement "{\n                    local_13c = iVar41;\n                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }\n                  }" ({ "{") (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" (identifier "local_13c") (= "=") (identifier "iVar41")) (; ";")) (if_statement "if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {\n                      local_13c = iVar41;\n                    }" (if "if") (parenthesized_expression "(((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2))" (( "(") (binary_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&\n                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(iVar34 + 0x24) & 0x80) != 0)" (( "(") (binary_expression "(*(byte *)(iVar34 + 0x24) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0x24) & 0x80)" (( "(") (binary_expression "*(byte *)(iVar34 + 0x24) & 0x80" (pointer_expression "*(byte *)(iVar34 + 0x24)" (* "*") (cast_expression "(byte *)(iVar34 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x24)" (( "(") (binary_expression "iVar34 + 0x24" (identifier "iVar34") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)" (( "(") (comma_expression "local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2" (assignment_expression "local_13c = 0" (identifier "local_13c") (= "=") (number_literal "0")) (, ",") (binary_expression "(*(byte *)(iVar41 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar41 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar41 + 0x37) & 3" (pointer_expression "*(byte *)(iVar41 + 0x37)" (* "*") (cast_expression "(byte *)(iVar41 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x37)" (( "(") (binary_expression "iVar41 + 0x37" (identifier "iVar41") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n                      local_13c = iVar41;\n                    }" ({ "{") (expression_statement "local_13c = iVar41;" (assignment_expression "local_13c = iVar41" (identifier "local_13c") (= "=") (identifier "iVar41")) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_00069230();" (call_expression "FUN_00069230()" (identifier "FUN_00069230") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" (identifier "iVar41") (= "=") (subscript_expression "param_1[0x36]" (identifier "param_1") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar41 != 0) {\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" (if "if") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar31 = (int *)param_1[2];\n                    if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }\n                    puVar26 = &DAT_001075d0;\n                    if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }\n                    iVar41 = *(int *)(puVar26 + 8);\n                  }" ({ "{") (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (iVar41 < 0) {\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" (if "if") (parenthesized_expression "(iVar41 < 0)" (( "(") (binary_expression "iVar41 < 0" (identifier "iVar41") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar41 = piVar31[0x1a] + -1;\n                    }" ({ "{") (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" (identifier "iVar41") (= "=") (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" (identifier "piVar31") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" (if "if") (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar31 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar31 + 0x4d)" (( "(") (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n                    }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" (( "(") (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" (identifier "piVar31") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar41 * 0x14" (identifier "iVar41") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(puVar26 + 8)" (* "*") (cast_expression "(int *)(puVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" (identifier "param_1") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (} "}"))) (expression_statement "iVar41 = *(int *)(iVar42 + 0xc);" (assignment_expression "iVar41 = *(int *)(iVar42 + 0xc)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(iVar42 + 0xc)" (* "*") (cast_expression "(int *)(iVar42 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0xc)" (( "(") (binary_expression "iVar42 + 0xc" (identifier "iVar42") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar43 = iVar27;" (assignment_expression "iVar43 = iVar27" (identifier "iVar43") (= "=") (identifier "iVar27")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 < iVar41)" (( "(") (binary_expression "iVar27 < iVar41" (identifier "iVar27") (< "<") (identifier "iVar41")) () ")")) (; ";")) (expression_statement "iVar41 = param_1[0x36];" (assignment_expression "iVar41 = param_1[0x36]" (identifier "iVar41") (= "=") (subscript_expression "param_1[0x36]" (identifier "param_1") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar41 != 0) {\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" (if "if") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar31 = (int *)param_1[2];\nLAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }\n              iVar41 = *(int *)(puVar26 + 8);\n            }" ({ "{") (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (labeled_statement "LAB_0009cb9d:\n              if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" (statement_identifier "LAB_0009cb9d") (: ":") (if_statement "if (iVar41 < 0) {\n                iVar41 = piVar31[0x1a] + -1;\n              }" (if "if") (parenthesized_expression "(iVar41 < 0)" (( "(") (binary_expression "iVar41 < 0" (identifier "iVar41") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                iVar41 = piVar31[0x1a] + -1;\n              }" ({ "{") (expression_statement "iVar41 = piVar31[0x1a] + -1;" (assignment_expression "iVar41 = piVar31[0x1a] + -1" (identifier "iVar41") (= "=") (binary_expression "piVar31[0x1a] + -1" (subscript_expression "piVar31[0x1a]" (identifier "piVar31") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" (if "if") (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar31 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar31 + 0x4d)" (( "(") (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);\n              }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(piVar31[0x19] + iVar41 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31[0x19] + iVar41 * 0x14)" (( "(") (binary_expression "piVar31[0x19] + iVar41 * 0x14" (subscript_expression "piVar31[0x19]" (identifier "piVar31") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar41 * 0x14" (identifier "iVar41") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar41 = *(int *)(puVar26 + 8);" (assignment_expression "iVar41 = *(int *)(puVar26 + 8)" (identifier "iVar41") (= "=") (pointer_expression "*(int *)(puVar26 + 8)" (* "*") (cast_expression "(int *)(puVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "param_1[0x36] = iVar41;" (assignment_expression "param_1[0x36] = iVar41" (subscript_expression "param_1[0x36]" (identifier "param_1") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "param_5[0x10] = local_13c;" (assignment_expression "param_5[0x10] = local_13c" (subscript_expression "param_5[0x10]" (identifier "param_5") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "local_13c")) (; ";")) (if_statement "if (local_13c != 0) {\n              param_5[2] = iVar20;\n            }" (if "if") (parenthesized_expression "(local_13c != 0)" (( "(") (binary_expression "local_13c != 0" (identifier "local_13c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              param_5[2] = iVar20;\n            }" ({ "{") (expression_statement "param_5[2] = iVar20;" (assignment_expression "param_5[2] = iVar20" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_134 != 0) {\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" (if "if") (parenthesized_expression "(local_134 != 0)" (( "(") (binary_expression "local_134 != 0" (identifier "local_134") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(local_134 + 0xc) = 0;\n            FUN_00053f30();\n          }" ({ "{") (expression_statement "*(undefined4 *)(local_134 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(local_134 + 0xc) = 0" (pointer_expression "*(undefined4 *)(local_134 + 0xc)" (* "*") (cast_expression "(undefined4 *)(local_134 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_134 + 0xc)" (( "(") (binary_expression "local_134 + 0xc" (identifier "local_134") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar41 = param_2[0x1a] + -1;" (assignment_expression "iVar41 = param_2[0x1a] + -1" (identifier "iVar41") (= "=") (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < iVar21) {\n            iVar41 = iVar21;\n          }" (if "if") (parenthesized_expression "(-1 < iVar21)" (( "(") (binary_expression "-1 < iVar21" (number_literal "-1") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n            iVar41 = iVar21;\n          }" ({ "{") (expression_statement "iVar41 = iVar21;" (assignment_expression "iVar41 = iVar21" (identifier "iVar41") (= "=") (identifier "iVar21")) (; ";")) (} "}"))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);\n          }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + iVar41 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + iVar41 * 0x14)" (( "(") (binary_expression "param_2[0x19] + iVar41 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar41 * 0x14" (identifier "iVar41") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar26 + 4) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 4) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 4)" (* "*") (cast_expression "(int *)(puVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 4)" (( "(") (binary_expression "puVar26 + 4" (identifier "puVar26") (+ "+") (number_literal "4")) () ")")))) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" (identifier "FUN_00049630") (argument_list "(param_5[3])" (( "(") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {\n            FUN_00023410();\n          }" (if "if") (parenthesized_expression "((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0))" (( "(") (binary_expression "(1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)" (parenthesized_expression "(1 < *(byte *)(param_3 + 0xb))" (( "(") (binary_expression "1 < *(byte *)(param_3 + 0xb)" (number_literal "1") (< "<") (pointer_expression "*(byte *)(param_3 + 0xb)" (* "*") (cast_expression "(byte *)(param_3 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xb)" (( "(") (binary_expression "param_3 + 0xb" (identifier "param_3") (+ "+") (number_literal "0xb")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(local_194 != (uint *)0x0)" (( "(") (binary_expression "local_194 != (uint *)0x0" (identifier "local_194") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n            FUN_00023410();\n          }" ({ "{") (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" (identifier "FUN_00023410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (!bVar48) {\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" (if "if") (parenthesized_expression "(!bVar48)" (( "(") (unary_expression "!bVar48" (! "!") (identifier "bVar48")) () ")")) (compound_statement "{\n            FUN_00020250();\n            local_158 = 0;\n            local_194 = (uint *)0x2;\n            goto LAB_0009b1f0;\n          }" ({ "{") (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (goto_statement "goto LAB_0009b1e0;" (goto "goto") (statement_identifier "LAB_0009b1e0") (; ";")) (} "}"))) (expression_statement "uVar32 = *(ushort *)(iVar42 + 0x1c);" (assignment_expression "uVar32 = *(ushort *)(iVar42 + 0x1c)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)(iVar42 + 0x1c)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x1c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1c)" (( "(") (binary_expression "iVar42 + 0x1c" (identifier "iVar42") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(ushort *)(iVar42 + 0x18);" (assignment_expression "uVar6 = *(ushort *)(iVar42 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(ushort *)(iVar42 + 0x18)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x18)" (( "(") (binary_expression "iVar42 + 0x18" (identifier "iVar42") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_118 = (uint)uVar6;" (assignment_expression "local_118 = (uint)uVar6" (identifier "local_118") (= "=") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "uVar7 = *(ushort *)(iVar42 + 0x1a);" (assignment_expression "uVar7 = *(ushort *)(iVar42 + 0x1a)" (identifier "uVar7") (= "=") (pointer_expression "*(ushort *)(iVar42 + 0x1a)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x1a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1a)" (( "(") (binary_expression "iVar42 + 0x1a" (identifier "iVar42") (+ "+") (number_literal "0x1a")) () ")"))))) (; ";")) (expression_statement "local_158 = *(int *)(iVar42 + 0x20);" (assignment_expression "local_158 = *(int *)(iVar42 + 0x20)" (identifier "local_158") (= "=") (pointer_expression "*(int *)(iVar42 + 0x20)" (* "*") (cast_expression "(int *)(iVar42 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x20)" (( "(") (binary_expression "iVar42 + 0x20" (identifier "iVar42") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar41 = param_5[2];" (assignment_expression "iVar41 = param_5[2]" (identifier "iVar41") (= "=") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uVar35 & 0x20) == 0) {\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }\n        else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x20) == 0)" (( "(") (binary_expression "(uVar35 & 0x20) == 0" (parenthesized_expression "(uVar35 & 0x20)" (( "(") (binary_expression "uVar35 & 0x20" (identifier "uVar35") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar37 = 0;\n          local_120 = (int *)0x0;\n          uVar19 = local_118;\n        }" ({ "{") (expression_statement "uVar37 = 0;" (assignment_expression "uVar37 = 0" (identifier "uVar37") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_120 = (int *)0x0;" (assignment_expression "local_120 = (int *)0x0" (identifier "local_120") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar19 = local_118;" (assignment_expression "uVar19 = local_118" (identifier "uVar19") (= "=") (identifier "local_118")) (; ";")) (} "}")) (else_clause "else {\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" (else "else") (compound_statement "{\n          uVar37 = (uint)uVar7;\n          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);\n          uVar19 = local_118 + 1;\n        }" ({ "{") (expression_statement "uVar37 = (uint)uVar7;" (assignment_expression "uVar37 = (uint)uVar7" (identifier "uVar37") (= "=") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);" (assignment_expression "local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" (identifier "local_120") (= "=") (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" (* "*") (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar42 + 0x30) + local_118 * 4)" (( "(") (binary_expression "*(int *)(iVar42 + 0x30) + local_118 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" (* "*") (cast_expression "(int *)(iVar42 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "local_118 * 4" (identifier "local_118") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar19 = local_118 + 1;" (assignment_expression "uVar19 = local_118 + 1" (identifier "uVar19") (= "=") (binary_expression "local_118 + 1" (identifier "local_118") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" (identifier "iVar20") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" (identifier "local_168") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((uVar35 & 0x10) == 0) {\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }\n        else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x10) == 0)" (( "(") (binary_expression "(uVar35 & 0x10) == 0" (parenthesized_expression "(uVar35 & 0x10)" (( "(") (binary_expression "uVar35 & 0x10" (identifier "uVar35") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          bVar48 = false;\n          local_12c = (int *)0x0;\n        }" ({ "{") (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (expression_statement "local_12c = (int *)0x0;" (assignment_expression "local_12c = (int *)0x0" (identifier "local_12c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" (else "else") (compound_statement "{\n          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);\n          if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }\n          bVar48 = false;\n          if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }\n        }" ({ "{") (expression_statement "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);" (assignment_expression "local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" (identifier "local_12c") (= "=") (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" (* "*") (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar19 * 4)" (( "(") (binary_expression "*(int *)(iVar42 + 0x30) + uVar19 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" (* "*") (cast_expression "(int *)(iVar42 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (uVar37 < uVar32) {\n            uVar37 = (uint)uVar32;\n          }" (if "if") (parenthesized_expression "(uVar37 < uVar32)" (( "(") (binary_expression "uVar37 < uVar32" (identifier "uVar37") (< "<") (identifier "uVar32")) () ")")) (compound_statement "{\n            uVar37 = (uint)uVar32;\n          }" ({ "{") (expression_statement "uVar37 = (uint)uVar32;" (assignment_expression "uVar37 = (uint)uVar32" (identifier "uVar37") (= "=") (cast_expression "(uint)uVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar32"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" (if "if") (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" (( "(") (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" (* "*") (cast_expression "(byte *)((int)local_12c + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_12c + 0xb)" (( "(") (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_12c")) (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            param_1[0xb] = local_168;\n            param_5[0xb] = local_168;\n            FUN_00049630(local_168);\n            param_5[0xc] = param_2[0x1a];\n            iVar20 = param_5[0xb];\n            param_5[0xb] = iVar20 * 2;\n            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;\n            uVar35 = *(uint *)(iVar42 + 0x24);\n            iVar20 = param_1[0xb];\n            local_168 = iVar20 + 1;\n          }" ({ "{") (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_168")) (; ";")) (expression_statement "param_5[0xb] = local_168;" (assignment_expression "param_5[0xb] = local_168" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_168")) (; ";")) (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" (identifier "FUN_00049630") (argument_list "(local_168)" (( "(") (identifier "local_168") () ")"))) (; ";")) (expression_statement "param_5[0xc] = param_2[0x1a];" (assignment_expression "param_5[0xc] = param_2[0x1a]" (subscript_expression "param_5[0xc]" (identifier "param_5") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "iVar20 = param_5[0xb];" (assignment_expression "iVar20 = param_5[0xb]" (identifier "iVar20") (= "=") (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "param_5[0xb] = iVar20 * 2;" (assignment_expression "param_5[0xb] = iVar20 * 2" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar20 * 2" (identifier "iVar20") (* "*") (number_literal "2"))) (; ";")) (expression_statement "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2;" (assignment_expression "param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |\n                           iVar20 * 2" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33" (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" (* "*") (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" (( "(") (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" (* "*") (cast_expression "(int *)(local_158 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x1c)" (( "(") (binary_expression "local_158 + 0x1c" (identifier "local_158") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (identifier "local_118")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (^ "^") (identifier "uVar33")) (| "|") (binary_expression "iVar20 * 2" (identifier "iVar20") (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(iVar42 + 0x24)" (* "*") (cast_expression "(uint *)(iVar42 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x24)" (( "(") (binary_expression "iVar42 + 0x24" (identifier "iVar42") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" (identifier "iVar20") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" (identifier "local_168") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (if_statement "if (local_120 == (int *)0x0) {\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" (if "if") (parenthesized_expression "(local_120 == (int *)0x0)" (( "(") (binary_expression "local_120 == (int *)0x0" (identifier "local_120") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);\n            if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }\n          }" ({ "{") (expression_statement "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);" (assignment_expression "iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" (identifier "iVar34") (= "=") (cast_expression "(int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(int *)(local_158 + 4) + local_118 * 2)" (* "*") (cast_expression "(short *)(*(int *)(local_158 + 4) + local_118 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 4) + local_118 * 2)" (( "(") (binary_expression "*(int *)(local_158 + 4) + local_118 * 2" (pointer_expression "*(int *)(local_158 + 4)" (* "*") (cast_expression "(int *)(local_158 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 4)" (( "(") (binary_expression "local_158 + 4" (identifier "local_158") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "local_118 * 2" (identifier "local_118") (* "*") (number_literal "2"))) () ")")))))) (; ";")) (if_statement "if (iVar34 < 0) {\n              bVar48 = iVar34 == -2;\n            }\n            else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" (if "if") (parenthesized_expression "(iVar34 < 0)" (( "(") (binary_expression "iVar34 < 0" (identifier "iVar34") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              bVar48 = iVar34 == -2;\n            }" ({ "{") (expression_statement "bVar48 = iVar34 == -2;" (assignment_expression "bVar48 = iVar34 == -2" (identifier "bVar48") (= "=") (binary_expression "iVar34 == -2" (identifier "iVar34") (== "==") (number_literal "-2"))) (; ";")) (} "}")) (else_clause "else {\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" (else "else") (compound_statement "{\n              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';\n            }" ({ "{") (expression_statement "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0';" (assignment_expression "bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" (identifier "bVar48") (= "=") (binary_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==\n                       '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" (* "*") (cast_expression "(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc)" (( "(") (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc" (binary_expression "*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14" (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(local_158 + 0xc) + 4" (pointer_expression "*(int *)(local_158 + 0xc)" (* "*") (cast_expression "(int *)(local_158 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0xc)" (( "(") (binary_expression "local_158 + 0xc" (identifier "local_158") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar34 * 0x14" (identifier "iVar34") (* "*") (number_literal "0x14"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (expression_statement "local_128 = 0;" (assignment_expression "local_128 = 0" (identifier "local_128") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar35 & 0x80030) == 0x80000) {\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x80030) == 0x80000)" (( "(") (binary_expression "(uVar35 & 0x80030) == 0x80000" (parenthesized_expression "(uVar35 & 0x80030)" (( "(") (binary_expression "uVar35 & 0x80030" (identifier "uVar35") (& "&") (number_literal "0x80030")) () ")")) (== "==") (number_literal "0x80000")) () ")")) (compound_statement "{\n          iVar34 = *param_5;\n          param_1[0xb] = local_168;\n          param_5[9] = local_168;\n          iVar20 = local_168;\n          if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }\n          iVar34 = param_1[0xe];\n          bVar48 = true;\n          uVar37 = 1;\n          param_1[0xe] = iVar34 + -1;\n          local_128 = local_168;\n          param_5[10] = iVar34 + -1;\n          local_168 = iVar20 + 1;\n        }" ({ "{") (expression_statement "iVar34 = *param_5;" (assignment_expression "iVar34 = *param_5" (identifier "iVar34") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "param_1[0xb] = local_168;" (assignment_expression "param_1[0xb] = local_168" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_168")) (; ";")) (expression_statement "param_5[9] = local_168;" (assignment_expression "param_5[9] = local_168" (subscript_expression "param_5[9]" (identifier "param_5") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_168")) (; ";")) (expression_statement "iVar20 = local_168;" (assignment_expression "iVar20 = local_168" (identifier "iVar20") (= "=") (identifier "local_168")) (; ";")) (if_statement "if (iVar34 != 0) {\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" (if "if") (parenthesized_expression "(iVar34 != 0)" (( "(") (binary_expression "iVar34 != 0" (identifier "iVar34") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(local_168);\n            iVar20 = param_1[0xb];\n          }" ({ "{") (expression_statement "FUN_00049630(local_168);" (call_expression "FUN_00049630(local_168)" (identifier "FUN_00049630") (argument_list "(local_168)" (( "(") (identifier "local_168") () ")"))) (; ";")) (expression_statement "iVar20 = param_1[0xb];" (assignment_expression "iVar20 = param_1[0xb]" (identifier "iVar20") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar34 = param_1[0xe];" (assignment_expression "iVar34 = param_1[0xe]" (identifier "iVar34") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" (identifier "bVar48") (= "=") (true "true")) (; ";")) (expression_statement "uVar37 = 1;" (assignment_expression "uVar37 = 1" (identifier "uVar37") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[0xe] = iVar34 + -1;" (assignment_expression "param_1[0xe] = iVar34 + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "iVar34 + -1" (identifier "iVar34") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_128 = local_168;" (assignment_expression "local_128 = local_168" (identifier "local_128") (= "=") (identifier "local_168")) (; ";")) (expression_statement "param_5[10] = iVar34 + -1;" (assignment_expression "param_5[10] = iVar34 + -1" (subscript_expression "param_5[10]" (identifier "param_5") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar34 + -1" (identifier "iVar34") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_168 = iVar20 + 1;" (assignment_expression "local_168 = iVar20 + 1" (identifier "local_168") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar6 < *(ushort *)(local_158 + 0x32)) {\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }\n        else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" (if "if") (parenthesized_expression "(uVar6 < *(ushort *)(local_158 + 0x32))" (( "(") (binary_expression "uVar6 < *(ushort *)(local_158 + 0x32)" (identifier "uVar6") (< "<") (pointer_expression "*(ushort *)(local_158 + 0x32)" (* "*") (cast_expression "(ushort *)(local_158 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x32)" (( "(") (binary_expression "local_158 + 0x32" (identifier "local_158") (+ "+") (number_literal "0x32")) () ")"))))) () ")")) (compound_statement "{\n          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;\nLAB_0009ac34:\n          uVar6 = uVar32;\n          bVar48 = false;\n          bVar13 = bVar48;\n        }" ({ "{") (if_statement "if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)\n          goto LAB_0009c48d;" (if "if") (parenthesized_expression "((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)" (( "(") (binary_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33" (parenthesized_expression "(*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0'" (pointer_expression "*(char *)(*(int *)(local_158 + 0x1c) + local_118)" (* "*") (cast_expression "(char *)(*(int *)(local_158 + 0x1c) + local_118)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 0x1c) + local_118)" (( "(") (binary_expression "*(int *)(local_158 + 0x1c) + local_118" (pointer_expression "*(int *)(local_158 + 0x1c)" (* "*") (cast_expression "(int *)(local_158 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x1c)" (( "(") (binary_expression "local_158 + 0x1c" (identifier "local_158") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (identifier "local_118")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (== "==") (identifier "uVar33")) () ")")) (goto_statement "goto LAB_0009c48d;" (goto "goto") (statement_identifier "LAB_0009c48d") (; ";"))) (labeled_statement "LAB_0009ac34:\n          uVar6 = uVar32;" (statement_identifier "LAB_0009ac34") (: ":") (expression_statement "uVar6 = uVar32;" (assignment_expression "uVar6 = uVar32" (identifier "uVar6") (= "=") (identifier "uVar32")) (; ";"))) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = bVar48;" (assignment_expression "bVar13 = bVar48" (identifier "bVar13") (= "=") (identifier "bVar48")) (; ";")) (} "}")) (else_clause "else {\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" (else "else") (compound_statement "{\n          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;\nLAB_0009c48d:\n          piVar31 = local_12c;\n          bVar13 = false;\n          local_12c = local_120;\n          uVar6 = uVar7 & 0xff;\n          local_120 = piVar31;\n          uVar7 = uVar32;\n        }" ({ "{") (if_statement "if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;" (if "if") (parenthesized_expression "((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0))" (( "(") (binary_expression "(*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)" (parenthesized_expression "(*(ushort *)(local_158 + 0x32) != uVar6)" (( "(") (binary_expression "*(ushort *)(local_158 + 0x32) != uVar6" (pointer_expression "*(ushort *)(local_158 + 0x32)" (* "*") (cast_expression "(ushort *)(local_158 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x32)" (( "(") (binary_expression "local_158 + 0x32" (identifier "local_158") (+ "+") (number_literal "0x32")) () ")")))) (!= "!=") (identifier "uVar6")) () ")")) (|| "||") (parenthesized_expression "((uVar45 & 1) == 0)" (( "(") (binary_expression "(uVar45 & 1) == 0" (parenthesized_expression "(uVar45 & 1)" (( "(") (binary_expression "uVar45 & 1" (identifier "uVar45") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009ac34;" (goto "goto") (statement_identifier "LAB_0009ac34") (; ";"))) (labeled_statement "LAB_0009c48d:\n          piVar31 = local_12c;" (statement_identifier "LAB_0009c48d") (: ":") (expression_statement "piVar31 = local_12c;" (assignment_expression "piVar31 = local_12c" (identifier "piVar31") (= "=") (identifier "local_12c")) (; ";"))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "local_12c = local_120;" (assignment_expression "local_12c = local_120" (identifier "local_12c") (= "=") (identifier "local_120")) (; ";")) (expression_statement "uVar6 = uVar7 & 0xff;" (assignment_expression "uVar6 = uVar7 & 0xff" (identifier "uVar6") (= "=") (binary_expression "uVar7 & 0xff" (identifier "uVar7") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "local_120 = piVar31;" (assignment_expression "local_120 = piVar31" (identifier "local_120") (= "=") (identifier "piVar31")) (; ";")) (expression_statement "uVar7 = uVar32;" (assignment_expression "uVar7 = uVar32" (identifier "uVar7") (= "=") (identifier "uVar32")) (; ";")) (} "}")))) (expression_statement "piVar31 = (int *)param_1[2];" (assignment_expression "piVar31 = (int *)param_1[2]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar34 = param_5[0x12];" (assignment_expression "iVar34 = param_5[0x12]" (identifier "iVar34") (= "=") (subscript_expression "param_5[0x12]" (identifier "param_5") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "uVar32 = *(ushort *)(iVar34 + 0x2a);" (assignment_expression "uVar32 = *(ushort *)(iVar34 + 0x2a)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)(iVar34 + 0x2a)" (* "*") (cast_expression "(ushort *)(iVar34 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x2a)" (( "(") (binary_expression "iVar34 + 0x2a" (identifier "iVar34") (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "uVar35 = (uint)uVar32;" (assignment_expression "uVar35 = (uint)uVar32" (identifier "uVar35") (= "=") (cast_expression "(uint)uVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar32"))) (; ";")) (expression_statement "uVar45 = (uint)*(ushort *)(iVar34 + 0x18);" (assignment_expression "uVar45 = (uint)*(ushort *)(iVar34 + 0x18)" (identifier "uVar45") (= "=") (binary_expression "(uint)*(ushort *)(iVar34 + 0x18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar34 + 0x18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x18)" (( "(") (binary_expression "iVar34 + 0x18" (identifier "iVar34") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "param_1[0xb] = iVar20 + uVar37 + uVar45;" (assignment_expression "param_1[0xb] = iVar20 + uVar37 + uVar45" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar20 + uVar37 + uVar45" (binary_expression "iVar20 + uVar37" (identifier "iVar20") (+ "+") (identifier "uVar37")) (+ "+") (identifier "uVar45"))) (; ";")) (expression_statement "FUN_0002e410();" (call_expression "FUN_0002e410()" (identifier "FUN_0002e410") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar20 = FUN_000300b0();" (assignment_expression "iVar20 = FUN_000300b0()" (identifier "iVar20") (= "=") (call_expression "FUN_000300b0()" (identifier "FUN_000300b0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar32 != 0) {\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" (if "if") (parenthesized_expression "(uVar32 != 0)" (( "(") (binary_expression "uVar32 != 0" (identifier "uVar32") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          iVar22 = FUN_000493f0(0,local_168);\n          if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }\n          *(int *)(puVar26 + 8) = iVar22;\n          uVar19 = 0;\n          do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);\n        }" ({ "{") (if_statement "if (uVar33 == 0) {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }\n          else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" (if "if") (parenthesized_expression "(uVar33 == 0)" (( "(") (binary_expression "uVar33 == 0" (identifier "uVar33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" ({ "{") (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" (identifier "iVar21") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" (else "else") (compound_statement "{\n            FUN_00049630(0);\n            iVar21 = FUN_00049630(0);\n          }" ({ "{") (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar21 = FUN_00049630(0);" (assignment_expression "iVar21 = FUN_00049630(0)" (identifier "iVar21") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar22 = FUN_000493f0(0,local_168);" (assignment_expression "iVar22 = FUN_000493f0(0,local_168)" (identifier "iVar22") (= "=") (call_expression "FUN_000493f0(0,local_168)" (identifier "FUN_000493f0") (argument_list "(0,local_168)" (( "(") (number_literal "0") (, ",") (identifier "local_168") () ")")))) (; ";")) (if_statement "if (*(char *)(*piVar31 + 0x4d) == '\0') {\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }\n          else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" (if "if") (parenthesized_expression "(*(char *)(*piVar31 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar31 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar31 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar31 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar31 + 0x4d)" (( "(") (binary_expression "*piVar31 + 0x4d" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar27 = piVar31[0x19];\n            iVar43 = iVar27 + iVar22 * 0x14;\n            *(undefined1 *)(iVar43 + 1) = 0xfd;\n            *(uint *)(iVar43 + 0x10) = uVar35;\n            param_5[5] = iVar22;\n            iVar22 = piVar31[0x1a];\n            if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }\n            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);\n          }" ({ "{") (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" (identifier "iVar27") (= "=") (subscript_expression "piVar31[0x19]" (identifier "piVar31") ([ "[") (number_literal "0x19") (] "]"))) (; ";")) (expression_statement "iVar43 = iVar27 + iVar22 * 0x14;" (assignment_expression "iVar43 = iVar27 + iVar22 * 0x14" (identifier "iVar43") (= "=") (binary_expression "iVar27 + iVar22 * 0x14" (identifier "iVar27") (+ "+") (binary_expression "iVar22 * 0x14" (identifier "iVar22") (* "*") (number_literal "0x14")))) (; ";")) (expression_statement "*(undefined1 *)(iVar43 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar43 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar43 + 1)" (* "*") (cast_expression "(undefined1 *)(iVar43 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 + 1)" (( "(") (binary_expression "iVar43 + 1" (identifier "iVar43") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xfd")) (; ";")) (expression_statement "*(uint *)(iVar43 + 0x10) = uVar35;" (assignment_expression "*(uint *)(iVar43 + 0x10) = uVar35" (pointer_expression "*(uint *)(iVar43 + 0x10)" (* "*") (cast_expression "(uint *)(iVar43 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 + 0x10)" (( "(") (binary_expression "iVar43 + 0x10" (identifier "iVar43") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" (identifier "iVar22") (= "=") (subscript_expression "piVar31[0x1a]" (identifier "piVar31") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (iVar21 < 0) {\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" (if "if") (parenthesized_expression "(iVar21 < 0)" (( "(") (binary_expression "iVar21 < 0" (identifier "iVar21") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              iVar27 = piVar31[0x19];\n              iVar21 = iVar22 + -1;\n            }" ({ "{") (expression_statement "iVar27 = piVar31[0x19];" (assignment_expression "iVar27 = piVar31[0x19]" (identifier "iVar27") (= "=") (subscript_expression "piVar31[0x19]" (identifier "piVar31") ([ "[") (number_literal "0x19") (] "]"))) (; ";")) (expression_statement "iVar21 = iVar22 + -1;" (assignment_expression "iVar21 = iVar22 + -1" (identifier "iVar21") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(iVar27 + iVar21 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + iVar21 * 0x14)" (( "(") (binary_expression "iVar27 + iVar21 * 0x14" (identifier "iVar27") (+ "+") (binary_expression "iVar21 * 0x14" (identifier "iVar21") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" (else "else") (compound_statement "{\n            param_5[5] = iVar22;\n            puVar26 = &DAT_001075d0;\n            iVar22 = piVar31[0x1a];\n          }" ({ "{") (expression_statement "param_5[5] = iVar22;" (assignment_expression "param_5[5] = iVar22" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (expression_statement "iVar22 = piVar31[0x1a];" (assignment_expression "iVar22 = piVar31[0x1a]" (identifier "iVar22") (= "=") (subscript_expression "piVar31[0x1a]" (identifier "piVar31") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar26 + 8) = iVar22;" (assignment_expression "*(int *)(puVar26 + 8) = iVar22" (pointer_expression "*(int *)(puVar26 + 8)" (* "*") (cast_expression "(int *)(puVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          } while (uVar38 != uVar35);" (do "do") (compound_statement "{\n            uVar38 = uVar19 + 1;\n            FUN_000493f0(uVar19,local_168 + uVar19);\n            uVar19 = uVar38;\n          }" ({ "{") (expression_statement "uVar38 = uVar19 + 1;" (assignment_expression "uVar38 = uVar19 + 1" (identifier "uVar38") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000493f0(uVar19,local_168 + uVar19);" (call_expression "FUN_000493f0(uVar19,local_168 + uVar19)" (identifier "FUN_000493f0") (argument_list "(uVar19,local_168 + uVar19)" (( "(") (identifier "uVar19") (, ",") (binary_expression "local_168 + uVar19" (identifier "local_168") (+ "+") (identifier "uVar19")) () ")"))) (; ";")) (expression_statement "uVar19 = uVar38;" (assignment_expression "uVar19 = uVar38" (identifier "uVar19") (= "=") (identifier "uVar38")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar38 != uVar35)" (( "(") (binary_expression "uVar38 != uVar35" (identifier "uVar38") (!= "!=") (identifier "uVar35")) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar35 < uVar45) {\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" (if "if") (parenthesized_expression "(uVar35 < uVar45)" (( "(") (binary_expression "uVar35 < uVar45" (identifier "uVar35") (< "<") (identifier "uVar45")) () ")")) (compound_statement "{\n          local_154 = uVar35 * 4;\n          do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);\n        }" ({ "{") (expression_statement "local_154 = uVar35 * 4;" (assignment_expression "local_154 = uVar35 * 4" (identifier "local_154") (= "=") (binary_expression "uVar35 * 4" (identifier "uVar35") (* "*") (number_literal "4"))) (; ";")) (do_statement "do {\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          } while (uVar45 != uVar35);" (do "do") (compound_statement "{\n            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);\n            iVar21 = local_168 + uVar35;\n            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);\n            if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }\n            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;\n            pcVar10 = *(char **)(*piVar31 + 0x10);\n            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }\n            if (iVar20 == 0) goto LAB_0009adbc;\n            cVar15 = *(char *)(iVar20 + uVar35);\n            cVar14 = FUN_0002e3d0();\n            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;\n            bVar16 = 0;\n            cVar14 = *pcVar10;\n            while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }\n            if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }\n            switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }\n            if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }\nLAB_0009adbc:\n            uVar35 = uVar35 + 1;\n            local_154 = local_154 + 4;\n          }" ({ "{") (expression_statement "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154)" (identifier "piVar31") (= "=") (pointer_expression "*(int **)(*(int *)(iVar34 + 0x30) + local_154)" (* "*") (cast_expression "(int **)(*(int *)(iVar34 + 0x30) + local_154)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar34 + 0x30) + local_154)" (( "(") (binary_expression "*(int *)(iVar34 + 0x30) + local_154" (pointer_expression "*(int *)(iVar34 + 0x30)" (* "*") (cast_expression "(int *)(iVar34 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x30)" (( "(") (binary_expression "iVar34 + 0x30" (identifier "iVar34") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (identifier "local_154")) () ")"))))) (; ";")) (expression_statement "iVar21 = local_168 + uVar35;" (assignment_expression "iVar21 = local_168 + uVar35" (identifier "iVar21") (= "=") (binary_expression "local_168 + uVar35" (identifier "local_168") (+ "+") (identifier "uVar35"))) (; ";")) (expression_statement "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);" (assignment_expression "iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21)" (identifier "iVar22") (= "=") (call_expression "FUN_0009a2d0(uVar35,uVar33,iVar21)" (identifier "FUN_0009a2d0") (argument_list "(uVar35,uVar33,iVar21)" (( "(") (identifier "uVar35") (, ",") (identifier "uVar33") (, ",") (identifier "iVar21") () ")")))) (; ";")) (if_statement "if (iVar21 != iVar22) {\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" (if "if") (parenthesized_expression "(iVar21 != iVar22)" (( "(") (binary_expression "iVar21 != iVar22" (identifier "iVar21") (!= "!=") (identifier "iVar22")) () ")")) (compound_statement "{\n              if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }\n            }" ({ "{") (if_statement "if (uVar37 + uVar45 == 1) {\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }\n              else {\n                FUN_00049630(iVar21);\n              }" (if "if") (parenthesized_expression "(uVar37 + uVar45 == 1)" (( "(") (binary_expression "uVar37 + uVar45 == 1" (binary_expression "uVar37 + uVar45" (identifier "uVar37") (+ "+") (identifier "uVar45")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                bVar47 = local_168 != 0;\n                local_168 = iVar22;\n                if (bVar47) {\n                  FUN_000254e0();\n                }\n              }" ({ "{") (expression_statement "bVar47 = local_168 != 0;" (assignment_expression "bVar47 = local_168 != 0" (identifier "bVar47") (= "=") (binary_expression "local_168 != 0" (identifier "local_168") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_168 = iVar22;" (assignment_expression "local_168 = iVar22" (identifier "local_168") (= "=") (identifier "iVar22")) (; ";")) (if_statement "if (bVar47) {\n                  FUN_000254e0();\n                }" (if "if") (parenthesized_expression "(bVar47)" (( "(") (identifier "bVar47") () ")")) (compound_statement "{\n                  FUN_000254e0();\n                }" ({ "{") (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" (identifier "FUN_000254e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                FUN_00049630(iVar21);\n              }" (else "else") (compound_statement "{\n                FUN_00049630(iVar21);\n              }" ({ "{") (expression_statement "FUN_00049630(iVar21);" (call_expression "FUN_00049630(iVar21)" (identifier "FUN_00049630") (argument_list "(iVar21)" (( "(") (identifier "iVar21") () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((*(ushort *)(piVar31 + 3) & 1) != 0) {\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" (if "if") (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 1) != 0)" (( "(") (binary_expression "(*(ushort *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 1)" (( "(") (binary_expression "*(ushort *)(piVar31 + 3) & 1" (pointer_expression "*(ushort *)(piVar31 + 3)" (* "*") (cast_expression "(ushort *)(piVar31 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31 + 3)" (( "(") (binary_expression "piVar31 + 3" (identifier "piVar31") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" ({ "{") (if_statement "if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;" (if "if") (parenthesized_expression "(((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0))" (( "(") (binary_expression "((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)" (parenthesized_expression "((*(byte *)(*piVar31 + 5) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(*piVar31 + 5) & 8) != 0" (parenthesized_expression "(*(byte *)(*piVar31 + 5) & 8)" (( "(") (binary_expression "*(byte *)(*piVar31 + 5) & 8" (pointer_expression "*(byte *)(*piVar31 + 5)" (* "*") (cast_expression "(byte *)(*piVar31 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar31 + 5)" (( "(") (binary_expression "*piVar31 + 5" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009adb4;" (goto "goto") (statement_identifier "LAB_0009adb4") (; ";"))) (goto_statement "goto LAB_0009adbc;" (goto "goto") (statement_identifier "LAB_0009adbc") (; ";")) (} "}"))) (if_statement "if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;" (if "if") (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x100) != 0)" (( "(") (binary_expression "(*(ushort *)(piVar31 + 3) & 0x100) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x100)" (( "(") (binary_expression "*(ushort *)(piVar31 + 3) & 0x100" (pointer_expression "*(ushort *)(piVar31 + 3)" (* "*") (cast_expression "(ushort *)(piVar31 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31 + 3)" (( "(") (binary_expression "piVar31 + 3" (identifier "piVar31") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009adbc;" (goto "goto") (statement_identifier "LAB_0009adbc") (; ";"))) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0x10)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(*piVar31 + 0x10)" (* "*") (cast_expression "(char **)(*piVar31 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar31 + 0x10)" (( "(") (binary_expression "*piVar31 + 0x10" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               ) {\n              FUN_00049630(param_5[3]);\n            }" (if "if") (parenthesized_expression "(((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)\n               )" (( "(") (binary_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 0xb) & 8) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar31 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 0xb) & 8)" (( "(") (binary_expression "*(byte *)((int)piVar31 + 0xb) & 8" (pointer_expression "*(byte *)((int)piVar31 + 0xb)" (* "*") (cast_expression "(byte *)((int)piVar31 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 0xb)" (( "(") (binary_expression "(int)piVar31 + 0xb" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar21 = FUN_0001fe30(), iVar21 != 0)" (( "(") (comma_expression "iVar21 = FUN_0001fe30(), iVar21 != 0" (assignment_expression "iVar21 = FUN_0001fe30()" (identifier "iVar21") (= "=") (call_expression "FUN_0001fe30()" (identifier "FUN_0001fe30") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              FUN_00049630(param_5[3]);\n            }" ({ "{") (expression_statement "FUN_00049630(param_5[3]);" (call_expression "FUN_00049630(param_5[3])" (identifier "FUN_00049630") (argument_list "(param_5[3])" (( "(") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar20 == 0) goto LAB_0009adbc;" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009adbc;" (goto "goto") (statement_identifier "LAB_0009adbc") (; ";"))) (expression_statement "cVar15 = *(char *)(iVar20 + uVar35);" (assignment_expression "cVar15 = *(char *)(iVar20 + uVar35)" (identifier "cVar15") (= "=") (pointer_expression "*(char *)(iVar20 + uVar35)" (* "*") (cast_expression "(char *)(iVar20 + uVar35)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar35)" (( "(") (binary_expression "iVar20 + uVar35" (identifier "iVar20") (+ "+") (identifier "uVar35")) () ")"))))) (; ";")) (expression_statement "cVar14 = FUN_0002e3d0();" (assignment_expression "cVar14 = FUN_0002e3d0()" (identifier "cVar14") (= "=") (call_expression "FUN_0002e3d0()" (identifier "FUN_0002e3d0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;" (if "if") (parenthesized_expression "((cVar14 == 'A') || (cVar15 == 'A'))" (( "(") (binary_expression "(cVar14 == 'A') || (cVar15 == 'A')" (parenthesized_expression "(cVar14 == 'A')" (( "(") (binary_expression "cVar14 == 'A'" (identifier "cVar14") (== "==") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(cVar15 == 'A')" (( "(") (binary_expression "cVar15 == 'A'" (identifier "cVar15") (== "==") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_0009adb4;" (goto "goto") (statement_identifier "LAB_0009adb4") (; ";"))) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" (identifier "cVar14") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (while_statement "while ((byte)(cVar14 + 0x56U) < 2) {\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" (while "while") (parenthesized_expression "((byte)(cVar14 + 0x56U) < 2)" (( "(") (binary_expression "(byte)(cVar14 + 0x56U) < 2" (call_expression "(byte)(cVar14 + 0x56U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar14 + 0x56U)" (( "(") (binary_expression "cVar14 + 0x56U" (identifier "cVar14") (+ "+") (number_literal "0x56U")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              pcVar10 = *(char **)(pcVar10 + 0xc);\n              if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }\n              cVar14 = *pcVar10;\n            }" ({ "{") (expression_statement "pcVar10 = *(char **)(pcVar10 + 0xc);" (assignment_expression "pcVar10 = *(char **)(pcVar10 + 0xc)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(pcVar10 + 0xc)" (* "*") (cast_expression "(char **)(pcVar10 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0xc)" (( "(") (binary_expression "pcVar10 + 0xc" (identifier "pcVar10") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (cVar14 == -0x56) {\n                bVar16 = 1;\n              }" (if "if") (parenthesized_expression "(cVar14 == -0x56)" (( "(") (binary_expression "cVar14 == -0x56" (identifier "cVar14") (== "==") (number_literal "-0x56")) () ")")) (compound_statement "{\n                bVar16 = 1;\n              }" ({ "{") (expression_statement "bVar16 = 1;" (assignment_expression "bVar16 = 1" (identifier "bVar16") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "cVar14 = *pcVar10;" (assignment_expression "cVar14 = *pcVar10" (identifier "cVar14") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (} "}"))) (if_statement "if (cVar14 == -0x53) {\n              cVar14 = pcVar10[2];\n            }" (if "if") (parenthesized_expression "(cVar14 == -0x53)" (( "(") (binary_expression "cVar14 == -0x53" (identifier "cVar14") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n              cVar14 = pcVar10[2];\n            }" ({ "{") (expression_statement "cVar14 = pcVar10[2];" (assignment_expression "cVar14 = pcVar10[2]" (identifier "cVar14") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (switch_statement "switch(cVar14) {\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" (switch "switch") (parenthesized_expression "(cVar14)" (( "(") (identifier "cVar14") () ")")) (compound_statement "{\n            case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;\n            default:\n              goto LAB_0009adbc;\n            case -0x6a:\n            case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;\n            case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;\n            case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;\n            }" ({ "{") (case_statement "case 's':\n              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));\n              break;" (case "case") (char_literal "'s'" (' "'") (character "s") (' "'")) (: ":") (expression_statement "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));" (assignment_expression "bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1))" (identifier "bVar47") (= "=") (cast_expression "(bool)(cVar15 == 'B' & (bVar16 ^ 1))" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(cVar15 == 'B' & (bVar16 ^ 1))" (( "(") (binary_expression "cVar15 == 'B' & (bVar16 ^ 1)" (binary_expression "cVar15 == 'B'" (identifier "cVar15") (== "==") (char_literal "'B'" (' "'") (character "B") (' "'"))) (& "&") (parenthesized_expression "(bVar16 ^ 1)" (( "(") (binary_expression "bVar16 ^ 1" (identifier "bVar16") (^ "^") (number_literal "1")) () ")"))) () ")")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n              goto LAB_0009adbc;" (default "default") (: ":") (goto_statement "goto LAB_0009adbc;" (goto "goto") (statement_identifier "LAB_0009adbc") (; ";"))) (case_statement "case -0x6a:" (case "case") (number_literal "-0x6a") (: ":")) (case_statement "case -0x68:\n              bVar47 = 'B' < cVar15;\n              break;" (case "case") (number_literal "-0x68") (: ":") (expression_statement "bVar47 = 'B' < cVar15;" (assignment_expression "bVar47 = 'B' < cVar15" (identifier "bVar47") (= "=") (binary_expression "'B' < cVar15" (char_literal "'B'" (' "'") (character "B") (' "'")) (< "<") (identifier "cVar15"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case -0x69:\n              bVar47 = (bool)(bVar16 ^ 1);\n              break;" (case "case") (number_literal "-0x69") (: ":") (expression_statement "bVar47 = (bool)(bVar16 ^ 1);" (assignment_expression "bVar47 = (bool)(bVar16 ^ 1)" (identifier "bVar47") (= "=") (cast_expression "(bool)(bVar16 ^ 1)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(bVar16 ^ 1)" (( "(") (binary_expression "bVar16 ^ 1" (identifier "bVar16") (^ "^") (number_literal "1")) () ")")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case -0x5c:\n              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;\n              goto LAB_0009adbc;" (case "case") (number_literal "-0x5c") (: ":") (if_statement "if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;" (if "if") (parenthesized_expression "(('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0))" (( "(") (binary_expression "('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)" (parenthesized_expression "('B' < cVar15)" (( "(") (binary_expression "'B' < cVar15" (char_literal "'B'" (' "'") (character "B") (' "'")) (< "<") (identifier "cVar15")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(pcVar10 + 0x20) < 0)" (( "(") (binary_expression "*(short *)(pcVar10 + 0x20) < 0" (pointer_expression "*(short *)(pcVar10 + 0x20)" (* "*") (cast_expression "(short *)(pcVar10 + 0x20)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x20)" (( "(") (binary_expression "pcVar10 + 0x20" (identifier "pcVar10") (+ "+") (number_literal "0x20")) () ")")))) (< "<") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009adb4;" (goto "goto") (statement_identifier "LAB_0009adb4") (; ";"))) (goto_statement "goto LAB_0009adbc;" (goto "goto") (statement_identifier "LAB_0009adbc") (; ";"))) (} "}"))) (if_statement "if (bVar47) {\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" (if "if") (parenthesized_expression "(bVar47)" (( "(") (identifier "bVar47") () ")")) (compound_statement "{\nLAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;\n            }" ({ "{") (labeled_statement "LAB_0009adb4:\n              *(undefined1 *)(iVar20 + uVar35) = 0x41;" (statement_identifier "LAB_0009adb4") (: ":") (expression_statement "*(undefined1 *)(iVar20 + uVar35) = 0x41;" (assignment_expression "*(undefined1 *)(iVar20 + uVar35) = 0x41" (pointer_expression "*(undefined1 *)(iVar20 + uVar35)" (* "*") (cast_expression "(undefined1 *)(iVar20 + uVar35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar35)" (( "(") (binary_expression "iVar20 + uVar35" (identifier "iVar20") (+ "+") (identifier "uVar35")) () ")")))) (= "=") (number_literal "0x41")) (; ";"))) (} "}"))) (labeled_statement "LAB_0009adbc:\n            uVar35 = uVar35 + 1;" (statement_identifier "LAB_0009adbc") (: ":") (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 + 1" (identifier "uVar35") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_154 = local_154 + 4;" (assignment_expression "local_154 = local_154 + 4" (identifier "local_154") (= "=") (binary_expression "local_154 + 4" (identifier "local_154") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar45 != uVar35)" (( "(") (binary_expression "uVar45 != uVar35" (identifier "uVar45") (!= "!=") (identifier "uVar35")) () ")")) (; ";")) (} "}"))) (if_statement "if ((uVar6 == 0) || (iVar20 == 0)) {\n          local_144 = 0;\n        }\n        else {\n          local_144 = FUN_000300b0();\n        }" (if "if") (parenthesized_expression "((uVar6 == 0) || (iVar20 == 0))" (( "(") (binary_expression "(uVar6 == 0) || (iVar20 == 0)" (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          local_144 = 0;\n        }" ({ "{") (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          local_144 = FUN_000300b0();\n        }" (else "else") (compound_statement "{\n          local_144 = FUN_000300b0();\n        }" ({ "{") (expression_statement "local_144 = FUN_000300b0();" (assignment_expression "local_144 = FUN_000300b0()" (identifier "local_144") (= "=") (call_expression "FUN_000300b0()" (identifier "FUN_000300b0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (if_statement "if (local_128 == 0) {\n          iVar34 = param_5[4];\n        }\n        else {\n          iVar34 = param_5[10];\n        }" (if "if") (parenthesized_expression "(local_128 == 0)" (( "(") (binary_expression "local_128 == 0" (identifier "local_128") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar34 = param_5[4];\n        }" ({ "{") (expression_statement "iVar34 = param_5[4];" (assignment_expression "iVar34 = param_5[4]" (identifier "iVar34") (= "=") (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          iVar34 = param_5[10];\n        }" (else "else") (compound_statement "{\n          iVar34 = param_5[10];\n        }" ({ "{") (expression_statement "iVar34 = param_5[10];" (assignment_expression "iVar34 = param_5[10]" (identifier "iVar34") (= "=") (subscript_expression "param_5[10]" (identifier "param_5") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")))) (if_statement "if (local_120 == (int *)0x0) {\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }\n        else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" (if "if") (parenthesized_expression "(local_120 == (int *)0x0)" (( "(") (binary_expression "local_120 == (int *)0x0" (identifier "local_120") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }\n        }" ({ "{") (if_statement "if (bVar13) {\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }\n          else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n            FUN_00049630(local_168 + local_118);\n            local_140 = 1;\n            uVar35 = local_118 + 1;\n            local_154 = 0;\n          }" ({ "{") (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" (identifier "FUN_00049630") (argument_list "(local_168 + local_118)" (( "(") (binary_expression "local_168 + local_118" (identifier "local_168") (+ "+") (identifier "local_118")) () ")"))) (; ";")) (expression_statement "local_140 = 1;" (assignment_expression "local_140 = 1" (identifier "local_140") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" (identifier "uVar35") (= "=") (binary_expression "local_118 + 1" (identifier "local_118") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_154 = 0;" (assignment_expression "local_154 = 0" (identifier "local_154") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" (else "else") (if_statement "if (local_128 == 0) {\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }\n          else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" (if "if") (parenthesized_expression "(local_128 == 0)" (( "(") (binary_expression "local_128 == 0" (identifier "local_128") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            local_140 = 0;\n            local_154 = 1;\n            uVar35 = local_118;\n          }" ({ "{") (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" (identifier "local_140") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar35 = local_118;" (assignment_expression "uVar35 = local_118" (identifier "uVar35") (= "=") (identifier "local_118")) (; ";")) (} "}")) (else_clause "else {\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" (else "else") (compound_statement "{\n            uVar35 = local_118 + 1;\n            FUN_00049630(local_168 + local_118);\n            local_140 = 0;\n            local_154 = 1;\n          }" ({ "{") (expression_statement "uVar35 = local_118 + 1;" (assignment_expression "uVar35 = local_118 + 1" (identifier "uVar35") (= "=") (binary_expression "local_118 + 1" (identifier "local_118") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00049630(local_168 + local_118);" (call_expression "FUN_00049630(local_168 + local_118)" (identifier "FUN_00049630") (argument_list "(local_168 + local_118)" (( "(") (binary_expression "local_168 + local_118" (identifier "local_168") (+ "+") (identifier "local_118")) () ")"))) (; ";")) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" (identifier "local_140") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" (else "else") (compound_statement "{\n          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);\n          pcVar10 = *(char **)(*local_120 + 0x10);\n          FUN_00095030((uint)uVar7);\n          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (iVar20 != 0) {\n            FUN_0002e510();\n          }\n          cVar15 = *pcVar10;\n          uVar35 = uVar7 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }\n          FUN_00020250();\n          local_140 = 0;\n        }" ({ "{") (expression_statement "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);" (assignment_expression "local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" (identifier "local_154") (= "=") (call_expression "(uint)((*(byte *)(local_120 + 3) & 0x28) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((*(byte *)(local_120 + 3) & 0x28) != 0)" (( "(") (binary_expression "(*(byte *)(local_120 + 3) & 0x28) != 0" (parenthesized_expression "(*(byte *)(local_120 + 3) & 0x28)" (( "(") (binary_expression "*(byte *)(local_120 + 3) & 0x28" (pointer_expression "*(byte *)(local_120 + 3)" (* "*") (cast_expression "(byte *)(local_120 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_120 + 3)" (( "(") (binary_expression "local_120 + 3" (identifier "local_120") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x28")) () ")")) (!= "!=") (number_literal "0")) () ")")))) (; ";")) (expression_statement "pcVar10 = *(char **)(*local_120 + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_120 + 0x10)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(*local_120 + 0x10)" (* "*") (cast_expression "(char **)(*local_120 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_120 + 0x10)" (( "(") (binary_expression "*local_120 + 0x10" (pointer_expression "*local_120" (* "*") (identifier "local_120")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_00095030((uint)uVar7);" (call_expression "FUN_00095030((uint)uVar7)" (identifier "FUN_00095030") (argument_list "((uint)uVar7)" (( "(") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) () ")"))) (; ";")) (if_statement "if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" (if "if") (parenthesized_expression "((*(byte *)((int)local_120 + 0xb) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)local_120 + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_120 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)((int)local_120 + 0xb) & 1" (pointer_expression "*(byte *)((int)local_120 + 0xb)" (* "*") (cast_expression "(byte *)((int)local_120 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_120 + 0xb)" (( "(") (binary_expression "(int)local_120 + 0xb" (cast_expression "(int)local_120" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_120")) (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" ({ "{") (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (( "(") (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" (( "(") (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "5")) (+ "+") (number_literal "-5")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" (identifier "uVar35") (= "=") (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" (* "*") (cast_expression "(ushort *)(puVar26 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 2)" (( "(") (binary_expression "puVar26 + 2" (identifier "puVar26") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar35")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" (* "*") (cast_expression "(uint *)(puVar26 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0xc)" (( "(") (binary_expression "puVar26 + 0xc" (identifier "puVar26") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "uVar35 >> 1" (identifier "uVar35") (>> ">>") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" (identifier "iVar21") (= "=") (call_expression "FUN_0001fe30()" (identifier "FUN_0001fe30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" ({ "{") (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar20 != 0) {\n            FUN_0002e510();\n          }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0002e510();\n          }" ({ "{") (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" (identifier "FUN_0002e510") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" (identifier "cVar15") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (expression_statement "uVar35 = uVar7 + local_118;" (assignment_expression "uVar35 = uVar7 + local_118" (identifier "uVar35") (= "=") (binary_expression "uVar7 + local_118" (identifier "uVar7") (+ "+") (identifier "local_118"))) (; ";")) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x53)" (( "(") (binary_expression "cVar15 == -0x53" (identifier "cVar15") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" ({ "{") (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" (identifier "cVar15") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x52)" (( "(") (binary_expression "cVar15 == -0x52" (identifier "cVar15") (== "==") (number_literal "-0x52")) () ")")) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }\n          }" ({ "{") (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(pcVar10 + 0x14)" (* "*") (pointer_expression "*(int **)(pcVar10 + 0x14)" (* "*") (cast_expression "(int **)(pcVar10 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (labeled_statement "LAB_0009c725:\n            if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" (statement_identifier "LAB_0009c725") (: ":") (if_statement "if (1 < iVar21) {\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" (if "if") (parenthesized_expression "(1 < iVar21)" (( "(") (binary_expression "1 < iVar21" (number_literal "1") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n              local_140 = 0;\n              local_154 = 1;\n              goto LAB_0009be0e;\n            }" ({ "{") (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" (identifier "local_140") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0009be0e;" (goto "goto") (statement_identifier "LAB_0009be0e") (; ";")) (} "}")))) (} "}")) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" (else "else") (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x78)" (( "(") (binary_expression "cVar15 == -0x78" (identifier "cVar15") (== "==") (number_literal "-0x78")) () ")")) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009c725;\n          }" ({ "{") (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" (* "*") (cast_expression "(int *)(pcVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0009c725;" (goto "goto") (statement_identifier "LAB_0009c725") (; ";")) (} "}"))))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_140 = 0;" (assignment_expression "local_140 = 0" (identifier "local_140") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0009be0e:\n        FUN_00049800(iVar20);" (statement_identifier "LAB_0009be0e") (: ":") (expression_statement "FUN_00049800(iVar20);" (call_expression "FUN_00049800(iVar20)" (identifier "FUN_00049800") (argument_list "(iVar20)" (( "(") (identifier "iVar20") () ")"))) (; ";"))) (if_statement "if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" (if "if") (parenthesized_expression "((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35))" (( "(") (binary_expression "(*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)" (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) == 0)" (( "(") (binary_expression "*(ushort *)(iVar42 + 0x2a) == 0" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x2a)" (( "(") (binary_expression "iVar42 + 0x2a" (identifier "iVar42") (+ "+") (number_literal "0x2a")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(ushort *)(iVar42 + 0x2a) != uVar35)" (( "(") (binary_expression "*(ushort *)(iVar42 + 0x2a) != uVar35" (pointer_expression "*(ushort *)(iVar42 + 0x2a)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x2a)" (( "(") (binary_expression "iVar42 + 0x2a" (identifier "iVar42") (+ "+") (number_literal "0x2a")) () ")")))) (!= "!=") (identifier "uVar35")) () ")"))) () ")")) (compound_statement "{\n          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }\n          if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }\n        }" ({ "{") (if_statement "if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {\n            FUN_00049630(0);\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar42 + 0x26) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(iVar42 + 0x26) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar42 + 0x26) & 4)" (( "(") (binary_expression "*(byte *)(iVar42 + 0x26) & 4" (pointer_expression "*(byte *)(iVar42 + 0x26)" (* "*") (cast_expression "(byte *)(iVar42 + 0x26)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x26)" (( "(") (binary_expression "iVar42 + 0x26" (identifier "iVar42") (+ "+") (number_literal "0x26")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(0);\n          }" ({ "{") (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_128 == 0) {\n            FUN_00068470(iVar34,local_168,uVar35);\n          }\n          else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" (if "if") (parenthesized_expression "(local_128 == 0)" (( "(") (binary_expression "local_128 == 0" (identifier "local_128") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00068470(iVar34,local_168,uVar35);\n          }" ({ "{") (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" (identifier "FUN_00068470") (argument_list "(iVar34,local_168,uVar35)" (( "(") (identifier "iVar34") (, ",") (identifier "local_168") (, ",") (identifier "uVar35") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" (else "else") (compound_statement "{\n            FUN_00049630(local_128);\n            FUN_00068470(iVar34,local_168,uVar35);\n            FUN_00049630(param_2[0x1a] + 2);\n            FUN_00068470(iVar34,local_168,uVar35 - local_154);\n          }" ({ "{") (expression_statement "FUN_00049630(local_128);" (call_expression "FUN_00049630(local_128)" (identifier "FUN_00049630") (argument_list "(local_128)" (( "(") (identifier "local_128") () ")"))) (; ";")) (expression_statement "FUN_00068470(iVar34,local_168,uVar35);" (call_expression "FUN_00068470(iVar34,local_168,uVar35)" (identifier "FUN_00068470") (argument_list "(iVar34,local_168,uVar35)" (( "(") (identifier "iVar34") (, ",") (identifier "local_168") (, ",") (identifier "uVar35") () ")"))) (; ";")) (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" (identifier "FUN_00049630") (argument_list "(param_2[0x1a] + 2)" (( "(") (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "FUN_00068470(iVar34,local_168,uVar35 - local_154);" (call_expression "FUN_00068470(iVar34,local_168,uVar35 - local_154)" (identifier "FUN_00068470") (argument_list "(iVar34,local_168,uVar35 - local_154)" (( "(") (identifier "iVar34") (, ",") (identifier "local_168") (, ",") (binary_expression "uVar35 - local_154" (identifier "uVar35") (- "-") (identifier "local_154")) () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_12c == (int *)0x0) {\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }\n        else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" (if "if") (parenthesized_expression "(local_12c == (int *)0x0)" (( "(") (binary_expression "local_12c == (int *)0x0" (identifier "local_12c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }\n        }" ({ "{") (if_statement "if (bVar48) {\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" (if "if") (parenthesized_expression "(bVar48)" (( "(") (identifier "bVar48") () ")")) (compound_statement "{\n            if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }\n            local_118 = local_118 + 1;\n          }" ({ "{") (if_statement "if (local_128 == 0) {\n              FUN_00049630(local_118 + local_168);\n            }" (if "if") (parenthesized_expression "(local_128 == 0)" (( "(") (binary_expression "local_128 == 0" (identifier "local_128") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00049630(local_118 + local_168);\n            }" ({ "{") (expression_statement "FUN_00049630(local_118 + local_168);" (call_expression "FUN_00049630(local_118 + local_168)" (identifier "FUN_00049630") (argument_list "(local_118 + local_168)" (( "(") (binary_expression "local_118 + local_168" (identifier "local_118") (+ "+") (identifier "local_168")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_118 = local_118 + 1;" (assignment_expression "local_118 = local_118 + 1" (identifier "local_118") (= "=") (binary_expression "local_118 + 1" (identifier "local_118") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" (else "else") (compound_statement "{\n          pcVar10 = *(char **)(*local_12c + 0x10);\n          FUN_00095030((uint)uVar6);\n          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }\n          iVar21 = FUN_0001fe30();\n          if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }\n          if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }\n          cVar15 = *pcVar10;\n          local_118 = uVar6 + local_118;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }\n          FUN_00020250();\n        }" ({ "{") (expression_statement "pcVar10 = *(char **)(*local_12c + 0x10);" (assignment_expression "pcVar10 = *(char **)(*local_12c + 0x10)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(*local_12c + 0x10)" (* "*") (cast_expression "(char **)(*local_12c + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_12c + 0x10)" (( "(") (binary_expression "*local_12c + 0x10" (pointer_expression "*local_12c" (* "*") (identifier "local_12c")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_00095030((uint)uVar6);" (call_expression "FUN_00095030((uint)uVar6)" (identifier "FUN_00095030") (argument_list "((uint)uVar6)" (( "(") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) () ")"))) (; ";")) (if_statement "if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" (if "if") (parenthesized_expression "((*(byte *)((int)local_12c + 0xb) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)local_12c + 0xb) & 1) != 0" (parenthesized_expression "(*(byte *)((int)local_12c + 0xb) & 1)" (( "(") (binary_expression "*(byte *)((int)local_12c + 0xb) & 1" (pointer_expression "*(byte *)((int)local_12c + 0xb)" (* "*") (cast_expression "(byte *)((int)local_12c + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_12c + 0xb)" (( "(") (binary_expression "(int)local_12c + 0xb" (cast_expression "(int)local_12c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_12c")) (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }\n            uVar35 = param_5[0xb];\n            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;\n            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;\n          }" ({ "{") (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);\n            }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4)" (( "(") (binary_expression "param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "(param_2[0x1a] * 5 + -5) * 4" (parenthesized_expression "(param_2[0x1a] * 5 + -5)" (( "(") (binary_expression "param_2[0x1a] * 5 + -5" (binary_expression "param_2[0x1a] * 5" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "5")) (+ "+") (number_literal "-5")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar35 = param_5[0xb];" (assignment_expression "uVar35 = param_5[0xb]" (identifier "uVar35") (= "=") (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;" (assignment_expression "*(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1" (pointer_expression "*(ushort *)(puVar26 + 2)" (* "*") (cast_expression "(ushort *)(puVar26 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 2)" (( "(") (binary_expression "puVar26 + 2" (identifier "puVar26") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "(ushort)uVar35 & 1" (cast_expression "(ushort)uVar35" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar35")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(puVar26 + 0xc) = uVar35 >> 1;" (assignment_expression "*(uint *)(puVar26 + 0xc) = uVar35 >> 1" (pointer_expression "*(uint *)(puVar26 + 0xc)" (* "*") (cast_expression "(uint *)(puVar26 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0xc)" (( "(") (binary_expression "puVar26 + 0xc" (identifier "puVar26") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "uVar35 >> 1" (identifier "uVar35") (>> ">>") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar21 = FUN_0001fe30();" (assignment_expression "iVar21 = FUN_0001fe30()" (identifier "iVar21") (= "=") (call_expression "FUN_0001fe30()" (identifier "FUN_0001fe30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar21 != 0) {\n            FUN_00049630(iVar34);\n          }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(iVar34);\n          }" ({ "{") (expression_statement "FUN_00049630(iVar34);" (call_expression "FUN_00049630(iVar34)" (identifier "FUN_00049630") (argument_list "(iVar34)" (( "(") (identifier "iVar34") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_144 != 0) {\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" (if "if") (parenthesized_expression "(local_144 != 0)" (( "(") (binary_expression "local_144 != 0" (identifier "local_144") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0002e510();\n            FUN_00049800(local_144);\n          }" ({ "{") (expression_statement "FUN_0002e510();" (call_expression "FUN_0002e510()" (identifier "FUN_0002e510") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049800(local_144);" (call_expression "FUN_00049800(local_144)" (identifier "FUN_00049800") (argument_list "(local_144)" (( "(") (identifier "local_144") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" (identifier "cVar15") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (expression_statement "local_118 = uVar6 + local_118;" (assignment_expression "local_118 = uVar6 + local_118" (identifier "local_118") (= "=") (binary_expression "uVar6 + local_118" (identifier "uVar6") (+ "+") (identifier "local_118"))) (; ";")) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x53)" (( "(") (binary_expression "cVar15 == -0x53" (identifier "cVar15") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" ({ "{") (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" (identifier "cVar15") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if (cVar15 == -0x52) {\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }\n          else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x52)" (( "(") (binary_expression "cVar15 == -0x52" (identifier "cVar15") (== "==") (number_literal "-0x52")) () ")")) (compound_statement "{\n            iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;\n          }" ({ "{") (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(pcVar10 + 0x14)" (* "*") (pointer_expression "*(int **)(pcVar10 + 0x14)" (* "*") (cast_expression "(int **)(pcVar10 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (labeled_statement "LAB_0009d041:\n            if (1 < iVar21) goto LAB_0009bf64;" (statement_identifier "LAB_0009d041") (: ":") (if_statement "if (1 < iVar21) goto LAB_0009bf64;" (if "if") (parenthesized_expression "(1 < iVar21)" (( "(") (binary_expression "1 < iVar21" (number_literal "1") (< "<") (identifier "iVar21")) () ")")) (goto_statement "goto LAB_0009bf64;" (goto "goto") (statement_identifier "LAB_0009bf64") (; ";")))) (} "}")) (else_clause "else if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" (else "else") (if_statement "if (cVar15 == -0x78) {\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x78)" (( "(") (binary_expression "cVar15 == -0x78" (identifier "cVar15") (== "==") (number_literal "-0x78")) () ")")) (compound_statement "{\n            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n            goto LAB_0009d041;\n          }" ({ "{") (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" (* "*") (cast_expression "(int *)(pcVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0009d041;" (goto "goto") (statement_identifier "LAB_0009d041") (; ";")) (} "}"))))) (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_0009bf64:\n        if (iVar20 != 0) {\n          FUN_00023410();\n        }" (statement_identifier "LAB_0009bf64") (: ":") (if_statement "if (iVar20 != 0) {\n          FUN_00023410();\n        }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00023410();\n        }" ({ "{") (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" (identifier "FUN_00023410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_144 != 0) {\n          FUN_00023410();\n        }" (if "if") (parenthesized_expression "(local_144 != 0)" (( "(") (binary_expression "local_144 != 0" (identifier "local_144") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00023410();\n        }" ({ "{") (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" (identifier "FUN_00023410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (local_118 != 0) {\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" (if "if") (parenthesized_expression "(local_118 != 0)" (( "(") (binary_expression "local_118 != 0" (identifier "local_118") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }\n          FUN_00068470(iVar34,local_168,local_118);\n        }" ({ "{") (if_statement "if (local_128 != 0) {\n            FUN_00049630(param_2[0x1a] + 3);\n          }" (if "if") (parenthesized_expression "(local_128 != 0)" (( "(") (binary_expression "local_128 != 0" (identifier "local_128") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00049630(param_2[0x1a] + 3);\n          }" ({ "{") (expression_statement "FUN_00049630(param_2[0x1a] + 3);" (call_expression "FUN_00049630(param_2[0x1a] + 3)" (identifier "FUN_00049630") (argument_list "(param_2[0x1a] + 3)" (( "(") (binary_expression "param_2[0x1a] + 3" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "3")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00068470(iVar34,local_168,local_118);" (call_expression "FUN_00068470(iVar34,local_168,local_118)" (identifier "FUN_00068470") (argument_list "(iVar34,local_168,local_118)" (( "(") (identifier "iVar34") (, ",") (identifier "local_168") (, ",") (identifier "local_118") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_128 != 0) {\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" (if "if") (parenthesized_expression "(local_128 != 0)" (( "(") (binary_expression "local_128 != 0" (identifier "local_128") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00049630(param_2[0x1a] + 2);\n          FUN_00068470(iVar34,local_168,local_118 + local_140);\n        }" ({ "{") (expression_statement "FUN_00049630(param_2[0x1a] + 2);" (call_expression "FUN_00049630(param_2[0x1a] + 2)" (identifier "FUN_00049630") (argument_list "(param_2[0x1a] + 2)" (( "(") (binary_expression "param_2[0x1a] + 2" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "FUN_00068470(iVar34,local_168,local_118 + local_140);" (call_expression "FUN_00068470(iVar34,local_168,local_118 + local_140)" (identifier "FUN_00068470") (argument_list "(iVar34,local_168,local_118 + local_140)" (( "(") (identifier "iVar34") (, ",") (identifier "local_168") (, ",") (binary_expression "local_118 + local_140" (identifier "local_118") (+ "+") (identifier "local_140")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(iVar42 + 0x24)" (* "*") (cast_expression "(uint *)(iVar42 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x24)" (( "(") (binary_expression "iVar42 + 0x24" (identifier "iVar42") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((uVar35 & 0x40000) != 0) {\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x40000) != 0)" (( "(") (binary_expression "(uVar35 & 0x40000) != 0" (parenthesized_expression "(uVar35 & 0x40000)" (( "(") (binary_expression "uVar35 & 0x40000" (identifier "uVar35") (& "&") (number_literal "0x40000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00049630(1);\n          uVar35 = *(uint *)(iVar42 + 0x24);\n        }" ({ "{") (expression_statement "FUN_00049630(1);" (call_expression "FUN_00049630(1)" (identifier "FUN_00049630") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(iVar42 + 0x24)" (* "*") (cast_expression "(uint *)(iVar42 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x24)" (( "(") (binary_expression "iVar42 + 0x24" (identifier "iVar42") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }\n        else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" (if "if") (parenthesized_expression "(((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0))" (( "(") (binary_expression "((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)" (parenthesized_expression "((uVar35 & 0x40) == 0)" (( "(") (binary_expression "(uVar35 & 0x40) == 0" (parenthesized_expression "(uVar35 & 0x40)" (( "(") (binary_expression "uVar35 & 0x40" (identifier "uVar35") (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" (( "(") (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" (* "*") (cast_expression "(byte *)(param_3 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }\n          bVar48 = false;\n        }" ({ "{") (if_statement "if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }\n          else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" (if "if") (parenthesized_expression "((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0" (parenthesized_expression "(*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80)" (( "(") (binary_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80" (pointer_expression "*(byte *)(*(int *)(local_158 + 0xc) + 0x24)" (* "*") (cast_expression "(byte *)(*(int *)(local_158 + 0xc) + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 0xc) + 0x24)" (( "(") (binary_expression "*(int *)(local_158 + 0xc) + 0x24" (pointer_expression "*(int *)(local_158 + 0xc)" (* "*") (cast_expression "(int *)(local_158 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0xc)" (( "(") (binary_expression "local_158 + 0xc" (identifier "local_158") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }\n            iVar20 = *param_3;\n            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;\n            FUN_000493f0(0,iVar9);\n            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }\n            iVar34 = *(int *)(iVar20 + 0x74);\n            if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }\n            if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }\n            if (*param_5 == 0) goto LAB_0009c8ce;\n          }" ({ "{") (if_statement "if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))\n            {\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" (if "if") (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))" (( "(") (binary_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0) ||\n               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x400) != 0)" (( "(") (binary_expression "(*(ushort *)(param_3 + 10) & 0x400) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x400)" (( "(") (binary_expression "*(ushort *)(param_3 + 10) & 0x400" (pointer_expression "*(ushort *)(param_3 + 10)" (* "*") (cast_expression "(ushort *)(param_3 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))))" (( "(") (parenthesized_expression "((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))" (( "(") (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0 &&\n                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" (binary_expression "(*(ushort *)(param_3 + 10) & 0x1000) != 0" (parenthesized_expression "(*(ushort *)(param_3 + 10) & 0x1000)" (( "(") (binary_expression "*(ushort *)(param_3 + 10) & 0x1000" (pointer_expression "*(ushort *)(param_3 + 10)" (* "*") (cast_expression "(ushort *)(param_3 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)))" (( "(") (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))" (( "(") (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0)" (binary_expression "*(char *)((int)param_3 + 0x2e) == '\x01'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" (* "*") (cast_expression "(char *)((int)param_3 + 0x2e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0x2e)" (( "(") (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0x2e")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (|| "||") (parenthesized_expression "(*(short *)(iVar42 + 0x28) == 0)" (( "(") (binary_expression "*(short *)(iVar42 + 0x28) == 0" (pointer_expression "*(short *)(iVar42 + 0x28)" (* "*") (cast_expression "(short *)(iVar42 + 0x28)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x28)" (( "(") (binary_expression "iVar42 + 0x28" (identifier "iVar42") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              iVar20 = param_1[0xb] + 1;\n              param_1[0xb] = iVar20;\n              FUN_00049630(iVar20);\n              FUN_000493f0(0,iVar20);\n              goto LAB_0009ca27;\n            }" ({ "{") (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" (identifier "iVar20") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" (identifier "FUN_00049630") (argument_list "(iVar20)" (( "(") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "FUN_000493f0(0,iVar20);" (call_expression "FUN_000493f0(0,iVar20)" (identifier "FUN_000493f0") (argument_list "(0,iVar20)" (( "(") (number_literal "0") (, ",") (identifier "iVar20") () ")"))) (; ";")) (goto_statement "goto LAB_0009ca27;" (goto "goto") (statement_identifier "LAB_0009ca27") (; ";")) (} "}"))) (expression_statement "iVar20 = *param_3;" (assignment_expression "iVar20 = *param_3" (identifier "iVar20") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" (* "*") (cast_expression "(byte *)(param_3 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(byte *)(param_3 + 0xc) | 1" (pointer_expression "*(byte *)(param_3 + 0xc)" (* "*") (cast_expression "(byte *)(param_3 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "FUN_000493f0(0,iVar9);" (call_expression "FUN_000493f0(0,iVar9)" (identifier "FUN_000493f0") (argument_list "(0,iVar9)" (( "(") (number_literal "0") (, ",") (identifier "iVar9") () ")"))) (; ";")) (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" (( "(") (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" (* "*") (cast_expression "(byte *)(param_3 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar48 = false;\n              goto LAB_0009c03e;\n            }" ({ "{") (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0009c03e;" (goto "goto") (statement_identifier "LAB_0009c03e") (; ";")) (} "}"))) (expression_statement "iVar34 = *(int *)(iVar20 + 0x74);" (assignment_expression "iVar34 = *(int *)(iVar20 + 0x74)" (identifier "iVar34") (= "=") (pointer_expression "*(int *)(iVar20 + 0x74)" (* "*") (cast_expression "(int *)(iVar20 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x74)" (( "(") (binary_expression "iVar20 + 0x74" (identifier "iVar20") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (if_statement "if (iVar34 == 0) {\n              iVar34 = iVar20;\n            }" (if "if") (parenthesized_expression "(iVar34 == 0)" (( "(") (binary_expression "iVar34 == 0" (identifier "iVar34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar34 = iVar20;\n            }" ({ "{") (expression_statement "iVar34 = iVar20;" (assignment_expression "iVar34 = iVar20" (identifier "iVar34") (= "=") (identifier "iVar20")) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar34 + 0x50) == 0) {\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" (if "if") (parenthesized_expression "(*(int *)(iVar34 + 0x50) == 0)" (( "(") (binary_expression "*(int *)(iVar34 + 0x50) == 0" (pointer_expression "*(int *)(iVar34 + 0x50)" (* "*") (cast_expression "(int *)(iVar34 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x50)" (( "(") (binary_expression "iVar34 + 0x50" (identifier "iVar34") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar20 = *(int *)(local_158 + 0xc);\n              piVar31 = (int *)FUN_0004e890();\n              if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }\n              goto LAB_0009ca27;\n            }" ({ "{") (expression_statement "iVar20 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar20 = *(int *)(local_158 + 0xc)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(local_158 + 0xc)" (* "*") (cast_expression "(int *)(local_158 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0xc)" (( "(") (binary_expression "local_158 + 0xc" (identifier "local_158") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "piVar31 = (int *)FUN_0004e890();" (assignment_expression "piVar31 = (int *)FUN_0004e890()" (identifier "piVar31") (= "=") (cast_expression "(int *)FUN_0004e890()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0004e890()" (identifier "FUN_0004e890") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar31 != (int *)0x0) {\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" (if "if") (parenthesized_expression "(piVar31 != (int *)0x0)" (( "(") (binary_expression "piVar31 != (int *)0x0" (identifier "piVar31") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *piVar31 = (int)*(short *)(iVar20 + 0x2a);\n                uVar32 = *(ushort *)(local_158 + 0x34);\n                if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }\n                FUN_000436c0(0xfffffff1);\n              }" ({ "{") (expression_statement "*piVar31 = (int)*(short *)(iVar20 + 0x2a);" (assignment_expression "*piVar31 = (int)*(short *)(iVar20 + 0x2a)" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (= "=") (cast_expression "(int)*(short *)(iVar20 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(iVar20 + 0x2a)" (* "*") (cast_expression "(short *)(iVar20 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x2a)" (( "(") (binary_expression "iVar20 + 0x2a" (identifier "iVar20") (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (expression_statement "uVar32 = *(ushort *)(local_158 + 0x34);" (assignment_expression "uVar32 = *(ushort *)(local_158 + 0x34)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)(local_158 + 0x34)" (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (1 < uVar32) {\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" (if "if") (parenthesized_expression "(1 < uVar32)" (( "(") (binary_expression "1 < uVar32" (number_literal "1") (< "<") (identifier "uVar32")) () ")")) (compound_statement "{\n                  iVar34 = *(int *)(local_158 + 4);\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);\n                }" ({ "{") (expression_statement "iVar34 = *(int *)(local_158 + 4);" (assignment_expression "iVar34 = *(int *)(local_158 + 4)" (identifier "iVar34") (= "=") (pointer_expression "*(int *)(local_158 + 4)" (* "*") (cast_expression "(int *)(local_158 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 4)" (( "(") (binary_expression "local_158 + 4" (identifier "local_158") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  } while (uVar32 - 1 != iVar21);" (do "do") (compound_statement "{\n                    sVar17 = *(short *)(iVar34 + iVar21 * 2);\n                    iVar21 = iVar21 + 1;\n                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }\n                  }" ({ "{") (expression_statement "sVar17 = *(short *)(iVar34 + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(iVar34 + iVar21 * 2)" (identifier "sVar17") (= "=") (pointer_expression "*(short *)(iVar34 + iVar21 * 2)" (* "*") (cast_expression "(short *)(iVar34 + iVar21 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + iVar21 * 2)" (( "(") (binary_expression "iVar34 + iVar21 * 2" (identifier "iVar34") (+ "+") (binary_expression "iVar21 * 2" (identifier "iVar21") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }\n                    else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" (if "if") (parenthesized_expression "((*(byte *)(iVar20 + 0x24) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(iVar20 + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar20 + 0x24) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar20 + 0x24) & 0x20" (pointer_expression "*(byte *)(iVar20 + 0x24)" (* "*") (cast_expression "(byte *)(iVar20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x24)" (( "(") (binary_expression "iVar20 + 0x24" (identifier "iVar20") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if (-1 < sVar17) goto LAB_0009d40b;\n                    }" ({ "{") (if_statement "if (-1 < sVar17) goto LAB_0009d40b;" (if "if") (parenthesized_expression "(-1 < sVar17)" (( "(") (binary_expression "-1 < sVar17" (number_literal "-1") (< "<") (identifier "sVar17")) () ")")) (goto_statement "goto LAB_0009d40b;" (goto "goto") (statement_identifier "LAB_0009d40b") (; ";"))) (} "}")) (else_clause "else if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" (else "else") (if_statement "if (-1 < sVar17) {\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" (if "if") (parenthesized_expression "(-1 < sVar17)" (( "(") (binary_expression "-1 < sVar17" (number_literal "-1") (< "<") (identifier "sVar17")) () ")")) (compound_statement "{\n                      sVar17 = FUN_00025700();\nLAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;\n                    }" ({ "{") (expression_statement "sVar17 = FUN_00025700();" (assignment_expression "sVar17 = FUN_00025700()" (identifier "sVar17") (= "=") (call_expression "FUN_00025700()" (identifier "FUN_00025700") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_0009d40b:\n                      piVar31[sVar17 + 1] = iVar21;" (statement_identifier "LAB_0009d40b") (: ":") (expression_statement "piVar31[sVar17 + 1] = iVar21;" (assignment_expression "piVar31[sVar17 + 1] = iVar21" (subscript_expression "piVar31[sVar17 + 1]" (identifier "piVar31") ([ "[") (binary_expression "sVar17 + 1" (identifier "sVar17") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "iVar21")) (; ";"))) (} "}"))))) (} "}")) (while "while") (parenthesized_expression "(uVar32 - 1 != iVar21)" (( "(") (binary_expression "uVar32 - 1 != iVar21" (binary_expression "uVar32 - 1" (identifier "uVar32") (- "-") (number_literal "1")) (!= "!=") (identifier "iVar21")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" (identifier "FUN_000436c0") (argument_list "(0xfffffff1)" (( "(") (number_literal "0xfffffff1") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0009ca27;" (goto "goto") (statement_identifier "LAB_0009ca27") (; ";")) (} "}"))) (if_statement "if (*param_5 == 0) goto LAB_0009c8ce;" (if "if") (parenthesized_expression "(*param_5 == 0)" (( "(") (binary_expression "*param_5 == 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009c8ce;" (goto "goto") (statement_identifier "LAB_0009c8ce") (; ";"))) (} "}")) (else_clause "else {\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" (else "else") (compound_statement "{\n            if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }\nLAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }\n          }" ({ "{") (if_statement "if (iVar9 != iVar41) {\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" (if "if") (parenthesized_expression "(iVar9 != iVar41)" (( "(") (binary_expression "iVar9 != iVar41" (identifier "iVar9") (!= "!=") (identifier "iVar41")) () ")")) (compound_statement "{\n              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);\n              if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }\nLAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();\n              (*pcVar12)();\n            }" ({ "{") (expression_statement "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);" (assignment_expression "iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(*(int *)(local_158 + 0xc) + 8)" (* "*") (cast_expression "(int *)(*(int *)(local_158 + 0xc) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 0xc) + 8)" (( "(") (binary_expression "*(int *)(local_158 + 0xc) + 8" (pointer_expression "*(int *)(local_158 + 0xc)" (* "*") (cast_expression "(int *)(local_158 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0xc)" (( "(") (binary_expression "local_158 + 0xc" (identifier "local_158") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar20 != 0) {\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;\n                iVar34 = FUN_00025510();\n                if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }\n                FUN_00068470(iVar40,iVar34,uVar35);\n                goto LAB_0009ca27;\n              }" ({ "{") (labeled_statement "LAB_0009c96b:\n                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" (statement_identifier "LAB_0009c96b") (: ":") (if_statement "if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;" (if "if") (parenthesized_expression "((*(byte *)(iVar20 + 0x37) & 3) != 2)" (( "(") (binary_expression "(*(byte *)(iVar20 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar20 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar20 + 0x37) & 3" (pointer_expression "*(byte *)(iVar20 + 0x37)" (* "*") (cast_expression "(byte *)(iVar20 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x37)" (( "(") (binary_expression "iVar20 + 0x37" (identifier "iVar20") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_0009c960;" (goto "goto") (statement_identifier "LAB_0009c960") (; ";")))) (expression_statement "iVar34 = FUN_00025510();" (assignment_expression "iVar34 = FUN_00025510()" (identifier "iVar34") (= "=") (call_expression "FUN_00025510()" (identifier "FUN_00025510") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(short *)(iVar20 + 0x32) == 0) {\n                  uVar35 = 0;\n                }\n                else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" (if "if") (parenthesized_expression "(*(short *)(iVar20 + 0x32) == 0)" (( "(") (binary_expression "*(short *)(iVar20 + 0x32) == 0" (pointer_expression "*(short *)(iVar20 + 0x32)" (* "*") (cast_expression "(short *)(iVar20 + 0x32)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x32)" (( "(") (binary_expression "iVar20 + 0x32" (identifier "iVar20") (+ "+") (number_literal "0x32")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar35 = 0;\n                }" ({ "{") (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" (identifier "uVar35") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" (else "else") (compound_statement "{\n                  iVar21 = 0;\n                  do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);\n                }" ({ "{") (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  } while (iVar21 < (int)uVar35);" (do "do") (compound_statement "{\n                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);\n                    if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }\n                    iVar22 = iVar34 + iVar21;\n                    iVar21 = iVar21 + 1;\n                    FUN_000493f0(uVar35,iVar22);\n                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);\n                  }" ({ "{") (expression_statement "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" (identifier "sVar17") (= "=") (pointer_expression "*(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" (* "*") (cast_expression "(short *)(*(int *)(iVar20 + 4) + iVar21 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar20 + 4) + iVar21 * 2)" (( "(") (binary_expression "*(int *)(iVar20 + 4) + iVar21 * 2" (pointer_expression "*(int *)(iVar20 + 4)" (* "*") (cast_expression "(int *)(iVar20 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 4)" (( "(") (binary_expression "iVar20 + 4" (identifier "iVar20") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar21 * 2" (identifier "iVar21") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (*(ushort *)(local_158 + 0x34) == 0) {\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }\n                    else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" (if "if") (parenthesized_expression "(*(ushort *)(local_158 + 0x34) == 0)" (( "(") (binary_expression "*(ushort *)(local_158 + 0x34) == 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0009c9d1:\n                      uVar35 = 0xffffffff;\n                    }" ({ "{") (labeled_statement "LAB_0009c9d1:\n                      uVar35 = 0xffffffff;" (statement_identifier "LAB_0009c9d1") (: ":") (expression_statement "uVar35 = 0xffffffff;" (assignment_expression "uVar35 = 0xffffffff" (identifier "uVar35") (= "=") (number_literal "0xffffffff")) (; ";"))) (} "}")) (else_clause "else {\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" (else "else") (compound_statement "{\n                      uVar35 = 0;\n                      if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }\n                    }" ({ "{") (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" (identifier "uVar35") (= "=") (number_literal "0")) (; ";")) (if_statement "if (sVar17 != **(short **)(local_158 + 4)) {\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" (if "if") (parenthesized_expression "(sVar17 != **(short **)(local_158 + 4))" (( "(") (binary_expression "sVar17 != **(short **)(local_158 + 4)" (identifier "sVar17") (!= "!=") (pointer_expression "**(short **)(local_158 + 4)" (* "*") (pointer_expression "*(short **)(local_158 + 4)" (* "*") (cast_expression "(short **)(local_158 + 4)" (( "(") (type_descriptor "short **" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_158 + 4)" (( "(") (binary_expression "local_158 + 4" (identifier "local_158") (+ "+") (number_literal "4")) () ")")))))) () ")")) (compound_statement "{\n                        do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);\n                        uVar35 = (uint)(short)uVar35;\n                      }" ({ "{") (do_statement "do {\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);" (do "do") (compound_statement "{\n                          uVar35 = uVar35 + 1;\n                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;\n                        }" ({ "{") (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 + 1" (identifier "uVar35") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;" (if "if") (parenthesized_expression "(uVar35 == *(ushort *)(local_158 + 0x34))" (( "(") (binary_expression "uVar35 == *(ushort *)(local_158 + 0x34)" (identifier "uVar35") (== "==") (pointer_expression "*(ushort *)(local_158 + 0x34)" (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")"))))) () ")")) (goto_statement "goto LAB_0009c9d1;" (goto "goto") (statement_identifier "LAB_0009c9d1") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(sVar17 != (*(short **)(local_158 + 4))[uVar35])" (( "(") (binary_expression "sVar17 != (*(short **)(local_158 + 4))[uVar35]" (identifier "sVar17") (!= "!=") (subscript_expression "(*(short **)(local_158 + 4))[uVar35]" (parenthesized_expression "(*(short **)(local_158 + 4))" (( "(") (pointer_expression "*(short **)(local_158 + 4)" (* "*") (cast_expression "(short **)(local_158 + 4)" (( "(") (type_descriptor "short **" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_158 + 4)" (( "(") (binary_expression "local_158 + 4" (identifier "local_158") (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (identifier "uVar35") (] "]"))) () ")")) (; ";")) (expression_statement "uVar35 = (uint)(short)uVar35;" (assignment_expression "uVar35 = (uint)(short)uVar35" (identifier "uVar35") (= "=") (cast_expression "(uint)(short)uVar35" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(short)uVar35" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar35")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar22 = iVar34 + iVar21;" (assignment_expression "iVar22 = iVar34 + iVar21" (identifier "iVar22") (= "=") (binary_expression "iVar34 + iVar21" (identifier "iVar34") (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000493f0(uVar35,iVar22);" (call_expression "FUN_000493f0(uVar35,iVar22)" (identifier "FUN_000493f0") (argument_list "(uVar35,iVar22)" (( "(") (identifier "uVar35") (, ",") (identifier "iVar22") () ")"))) (; ";")) (expression_statement "uVar35 = (uint)*(ushort *)(iVar20 + 0x32);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar20 + 0x32)" (identifier "uVar35") (= "=") (binary_expression "(uint)*(ushort *)(iVar20 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar20 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x32)" (( "(") (binary_expression "iVar20 + 0x32" (identifier "iVar20") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 < (int)uVar35)" (( "(") (binary_expression "iVar21 < (int)uVar35" (identifier "iVar21") (< "<") (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35"))) () ")")) (; ";")) (} "}")))) (expression_statement "FUN_00068470(iVar40,iVar34,uVar35);" (call_expression "FUN_00068470(iVar40,iVar34,uVar35)" (identifier "FUN_00068470") (argument_list "(iVar40,iVar34,uVar35)" (( "(") (identifier "iVar40") (, ",") (identifier "iVar34") (, ",") (identifier "uVar35") () ")"))) (; ";")) (goto_statement "goto LAB_0009ca27;" (goto "goto") (statement_identifier "LAB_0009ca27") (; ";")) (} "}"))) (labeled_statement "LAB_0009ca50:\n                    \n              pcVar12 = (code *)invalidInstructionException();" (statement_identifier "LAB_0009ca50") (: ":") (expression_statement "pcVar12 = (code *)invalidInstructionException();" (assignment_expression "pcVar12 = (code *)invalidInstructionException()" (identifier "pcVar12") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0009ca27:\n            if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" (statement_identifier "LAB_0009ca27") (: ":") (if_statement "if (*param_5 == 0) {\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" (if "if") (parenthesized_expression "(*param_5 == 0)" (( "(") (binary_expression "*param_5 == 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }\nLAB_0009c8ce:\n              bVar48 = false;\n              goto LAB_0009c1d7;\n            }" ({ "{") (if_statement "if ((*(byte *)(param_3 + 10) & 0x20) == 0) {\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 10) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 10) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_3 + 10) & 0x20)" (( "(") (binary_expression "*(byte *)(param_3 + 10) & 0x20" (pointer_expression "*(byte *)(param_3 + 10)" (* "*") (cast_expression "(byte *)(param_3 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar48 = false;\n                goto LAB_0009c049;\n              }" ({ "{") (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0009c049;" (goto "goto") (statement_identifier "LAB_0009c049") (; ";")) (} "}"))) (labeled_statement "LAB_0009c8ce:\n              bVar48 = false;" (statement_identifier "LAB_0009c8ce") (: ":") (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";"))) (goto_statement "goto LAB_0009c1d7;" (goto "goto") (statement_identifier "LAB_0009c1d7") (; ";")) (} "}")))) (} "}")))) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" (identifier "bVar48") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" (else "else") (compound_statement "{\n          bVar48 = true;\nLAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }\n        }" ({ "{") (expression_statement "bVar48 = true;" (assignment_expression "bVar48 = true" (identifier "bVar48") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_0009c03e:\n          if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" (statement_identifier "LAB_0009c03e") (: ":") (if_statement "if (*param_5 == 0) {\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" (if "if") (parenthesized_expression "(*param_5 == 0)" (( "(") (binary_expression "*param_5 == 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);\n            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }\nLAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }\n          }" ({ "{") (labeled_statement "LAB_0009c049:\n            iVar20 = *(int *)(local_158 + 0x28);" (statement_identifier "LAB_0009c049") (: ":") (expression_statement "iVar20 = *(int *)(local_158 + 0x28);" (assignment_expression "iVar20 = *(int *)(local_158 + 0x28)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(local_158 + 0x28)" (* "*") (cast_expression "(int *)(local_158 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x28)" (( "(") (binary_expression "local_158 + 0x28" (identifier "local_158") (+ "+") (number_literal "0x28")) () ")"))))) (; ";"))) (if_statement "if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" (if "if") (parenthesized_expression "((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0))" (( "(") (binary_expression "(iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)" (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(local_158 + 0x38) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(local_158 + 0x38) & 4) != 0" (parenthesized_expression "(*(byte *)(local_158 + 0x38) & 4)" (( "(") (binary_expression "*(byte *)(local_158 + 0x38) & 4" (pointer_expression "*(byte *)(local_158 + 0x38)" (* "*") (cast_expression "(byte *)(local_158 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x38)" (( "(") (binary_expression "local_158 + 0x38" (identifier "local_158") (+ "+") (number_literal "0x38")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              iVar34 = *(int *)(local_158 + 0xc);\n              uVar35 = 0;\n              do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);\n              local_d8 = &local_d4;\n              local_bc = *(undefined4 *)*param_3;\n              local_17c = (uint)*(ushort *)(local_158 + 0x34);\n              local_d0 = iVar9;\n              local_cc = iVar41;\n              local_c0 = param_3;\n              if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }\n            }" ({ "{") (expression_statement "iVar34 = *(int *)(local_158 + 0xc);" (assignment_expression "iVar34 = *(int *)(local_158 + 0xc)" (identifier "iVar34") (= "=") (pointer_expression "*(int *)(local_158 + 0xc)" (* "*") (cast_expression "(int *)(local_158 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0xc)" (( "(") (binary_expression "local_158 + 0xc" (identifier "local_158") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" (identifier "uVar35") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              } while (uVar35 < 0x18);" (do "do") (compound_statement "{\n                *(undefined4 *)((int)local_f0 + uVar35) = 0;\n                uVar35 = uVar35 + 4;\n              }" ({ "{") (expression_statement "*(undefined4 *)((int)local_f0 + uVar35) = 0;" (assignment_expression "*(undefined4 *)((int)local_f0 + uVar35) = 0" (pointer_expression "*(undefined4 *)((int)local_f0 + uVar35)" (* "*") (cast_expression "(undefined4 *)((int)local_f0 + uVar35)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_f0 + uVar35)" (( "(") (binary_expression "(int)local_f0 + uVar35" (cast_expression "(int)local_f0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_f0")) (+ "+") (identifier "uVar35")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar35 = uVar35 + 4;" (assignment_expression "uVar35 = uVar35 + 4" (identifier "uVar35") (= "=") (binary_expression "uVar35 + 4" (identifier "uVar35") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar35 < 0x18)" (( "(") (binary_expression "uVar35 < 0x18" (identifier "uVar35") (< "<") (number_literal "0x18")) () ")")) (; ";")) (expression_statement "local_d8 = &local_d4;" (assignment_expression "local_d8 = &local_d4" (identifier "local_d8") (= "=") (pointer_expression "&local_d4" (& "&") (identifier "local_d4"))) (; ";")) (expression_statement "local_bc = *(undefined4 *)*param_3;" (assignment_expression "local_bc = *(undefined4 *)*param_3" (identifier "local_bc") (= "=") (pointer_expression "*(undefined4 *)*param_3" (* "*") (cast_expression "(undefined4 *)*param_3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))))) (; ";")) (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" (identifier "local_17c") (= "=") (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_d0 = iVar9;" (assignment_expression "local_d0 = iVar9" (identifier "local_d0") (= "=") (identifier "iVar9")) (; ";")) (expression_statement "local_cc = iVar41;" (assignment_expression "local_cc = iVar41" (identifier "local_cc") (= "=") (identifier "iVar41")) (; ";")) (expression_statement "local_c0 = param_3;" (assignment_expression "local_c0 = param_3" (identifier "local_c0") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (*(ushort *)(local_158 + 0x34) != 0) {\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" (if "if") (parenthesized_expression "(*(ushort *)(local_158 + 0x34) != 0)" (( "(") (binary_expression "*(ushort *)(local_158 + 0x34) != 0" (pointer_expression "*(ushort *)(local_158 + 0x34)" (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar21 = 0;\n                do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);\n              }" ({ "{") (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                } while (iVar21 < (int)local_17c);" (do "do") (compound_statement "{\n                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);\n                  iVar22 = (int)sVar17;\n                  if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }\nLAB_0009c1bb:\n                  iVar21 = iVar21 + 1;\n                }" ({ "{") (expression_statement "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);" (assignment_expression "sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" (identifier "sVar17") (= "=") (pointer_expression "*(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" (* "*") (cast_expression "(short *)(*(int *)(local_158 + 4) + iVar21 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_158 + 4) + iVar21 * 2)" (( "(") (binary_expression "*(int *)(local_158 + 4) + iVar21 * 2" (pointer_expression "*(int *)(local_158 + 4)" (* "*") (cast_expression "(int *)(local_158 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 4)" (( "(") (binary_expression "local_158 + 4" (identifier "local_158") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar21 * 2" (identifier "iVar21") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "iVar22 = (int)sVar17;" (assignment_expression "iVar22 = (int)sVar17" (identifier "iVar22") (= "=") (cast_expression "(int)sVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar17"))) (; ";")) (if_statement "if (sVar17 == -2) {\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }\n                  else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" (if "if") (parenthesized_expression "(sVar17 == -2)" (( "(") (binary_expression "sVar17 == -2" (identifier "sVar17") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);\n                    local_a4 = CONCAT22(local_a4._2_2_,1);\n                    local_a0 = (int *)0x0;\n                    local_b0 = FUN_0001fe20;\n                    local_b4 = FUN_0002a790;\n                    if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }\n                  }" ({ "{") (expression_statement "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);" (assignment_expression "local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10)" (identifier "local_d4") (= "=") (pointer_expression "*(int *)(iVar20 + 4 + iVar21 * 0x10)" (* "*") (cast_expression "(int *)(iVar20 + 4 + iVar21 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 4 + iVar21 * 0x10)" (( "(") (binary_expression "iVar20 + 4 + iVar21 * 0x10" (binary_expression "iVar20 + 4" (identifier "iVar20") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar21 * 0x10" (identifier "iVar21") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (expression_statement "local_a4 = CONCAT22(local_a4._2_2_,1);" (assignment_expression "local_a4 = CONCAT22(local_a4._2_2_,1)" (identifier "local_a4") (= "=") (call_expression "CONCAT22(local_a4._2_2_,1)" (identifier "CONCAT22") (argument_list "(local_a4._2_2_,1)" (( "(") (field_expression "local_a4._2_2_" (identifier "local_a4") (. ".") (field_identifier "_2_2_")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "local_a0 = (int *)0x0;" (assignment_expression "local_a0 = (int *)0x0" (identifier "local_a0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_b0 = FUN_0001fe20;" (assignment_expression "local_b0 = FUN_0001fe20" (identifier "local_b0") (= "=") (identifier "FUN_0001fe20")) (; ";")) (expression_statement "local_b4 = FUN_0002a790;" (assignment_expression "local_b4 = FUN_0002a790" (identifier "local_b4") (= "=") (identifier "FUN_0002a790")) (; ";")) (if_statement "if (local_d4 != 0) {\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" (if "if") (parenthesized_expression "(local_d4 != 0)" (( "(") (binary_expression "local_d4 != 0" (identifier "local_d4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_0004c8d0();\n                      if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }\n                      goto LAB_0009c1b2;\n                    }" ({ "{") (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" (identifier "FUN_0004c8d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((short)local_a4 == 0) {\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" (if "if") (parenthesized_expression "((short)local_a4 == 0)" (( "(") (binary_expression "(short)local_a4 == 0" (cast_expression "(short)local_a4" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_a4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        pcVar12 = FUN_00061900;\n                        iVar22 = local_c4;\n                        goto LAB_0009c17b;\n                      }" ({ "{") (expression_statement "pcVar12 = FUN_00061900;" (assignment_expression "pcVar12 = FUN_00061900" (identifier "pcVar12") (= "=") (identifier "FUN_00061900")) (; ";")) (expression_statement "iVar22 = local_c4;" (assignment_expression "iVar22 = local_c4" (identifier "iVar22") (= "=") (identifier "local_c4")) (; ";")) (goto_statement "goto LAB_0009c17b;" (goto "goto") (statement_identifier "LAB_0009c17b") (; ";")) (} "}"))) (goto_statement "goto LAB_0009c1b2;" (goto "goto") (statement_identifier "LAB_0009c1b2") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" (else "else") (if_statement "if ((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" (if "if") (parenthesized_expression "((-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0))" (( "(") (binary_expression "(-1 < sVar17) &&\n                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" (parenthesized_expression "(-1 < sVar17)" (( "(") (binary_expression "-1 < sVar17" (number_literal "-1") (< "<") (identifier "sVar17")) () ")")) (&& "&&") (parenthesized_expression "(iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)" (( "(") (comma_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,\n                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0" (assignment_expression "iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14" (identifier "iVar43") (= "=") (binary_expression "*(int *)(iVar34 + 4) + iVar22 * 0x14" (pointer_expression "*(int *)(iVar34 + 4)" (* "*") (cast_expression "(int *)(iVar34 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 4)" (( "(") (binary_expression "iVar34 + 4" (identifier "iVar34") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar22 * 0x14" (identifier "iVar22") (* "*") (number_literal "0x14")))) (, ",") (binary_expression "(*(byte *)(iVar43 + 0x10) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar43 + 0x10) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar43 + 0x10) & 0x20" (pointer_expression "*(byte *)(iVar43 + 0x10)" (* "*") (cast_expression "(byte *)(iVar43 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 + 0x10)" (( "(") (binary_expression "iVar43 + 0x10" (identifier "iVar43") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    iVar43 = *(int *)(iVar43 + 8);\n                    pcVar12 = FUN_00032b10;\n                    if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }\nLAB_0009c17b:\n                    local_c4 = iVar22;\n                    local_f0[1] = pcVar12;\n                    local_c8 = iVar21;\n                    if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }\n                    FUN_0004c9a0();\n                    FUN_0004c9a0();\nLAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);\n                  }" ({ "{") (expression_statement "iVar43 = *(int *)(iVar43 + 8);" (assignment_expression "iVar43 = *(int *)(iVar43 + 8)" (identifier "iVar43") (= "=") (pointer_expression "*(int *)(iVar43 + 8)" (* "*") (cast_expression "(int *)(iVar43 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 + 8)" (( "(") (binary_expression "iVar43 + 8" (identifier "iVar43") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar12 = FUN_00032b10;" (assignment_expression "pcVar12 = FUN_00032b10" (identifier "pcVar12") (= "=") (identifier "FUN_00032b10")) (; ";")) (if_statement "if (iVar43 != 0) {\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" (if "if") (parenthesized_expression "(iVar43 != 0)" (( "(") (binary_expression "iVar43 != 0" (identifier "iVar43") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar27 = 0;\n                      do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );\n                    }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      } while( true );" (do "do") (compound_statement "{\n                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);\n                        if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;\n                        iVar27 = iVar27 + 1;\n                      }" ({ "{") (expression_statement "uVar35 = (uint)*(byte *)(iVar43 + iVar27);" (assignment_expression "uVar35 = (uint)*(byte *)(iVar43 + iVar27)" (identifier "uVar35") (= "=") (binary_expression "(uint)*(byte *)(iVar43 + iVar27)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar43 + iVar27)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar43 + iVar27)" (( "(") (binary_expression "iVar43 + iVar27" (identifier "iVar43") (+ "+") (identifier "iVar27")) () ")"))))) (; ";")) (if_statement "if (uVar35 == (byte)"BINARY"[iVar27]) {\n                          if (uVar35 == 0) break;\n                        }\n                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" (if "if") (parenthesized_expression "(uVar35 == (byte)"BINARY"[iVar27])" (( "(") (binary_expression "uVar35 == (byte)"BINARY"[iVar27]" (identifier "uVar35") (== "==") (cast_expression "(byte)"BINARY"[iVar27]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" (" """) (string_content "BINARY") (" """)) ([ "[") (identifier "iVar27") (] "]")))) () ")")) (compound_statement "{\n                          if (uVar35 == 0) break;\n                        }" ({ "{") (if_statement "if (uVar35 == 0) break;" (if "if") (parenthesized_expression "(uVar35 == 0)" (( "(") (binary_expression "uVar35 == 0" (identifier "uVar35") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" (else "else") (if_statement "if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])\n                        goto LAB_0009c1bb;" (if "if") (parenthesized_expression "((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])" (( "(") (binary_expression "(&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (subscript_expression "(&DAT_000dc6c0)[uVar35]" (parenthesized_expression "(&DAT_000dc6c0)" (( "(") (pointer_expression "&DAT_000dc6c0" (& "&") (identifier "DAT_000dc6c0")) () ")")) ([ "[") (identifier "uVar35") (] "]")) (!= "!=") (subscript_expression "(&DAT_000dc6c0)[(byte)"BINARY"[iVar27]]" (parenthesized_expression "(&DAT_000dc6c0)" (( "(") (pointer_expression "&DAT_000dc6c0" (& "&") (identifier "DAT_000dc6c0")) () ")")) ([ "[") (cast_expression "(byte)"BINARY"[iVar27]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression ""BINARY"[iVar27]" (string_literal ""BINARY"" (" """) (string_content "BINARY") (" """)) ([ "[") (identifier "iVar27") (] "]"))) (] "]"))) () ")")) (goto_statement "goto LAB_0009c1bb;" (goto "goto") (statement_identifier "LAB_0009c1bb") (; ";"))))) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0009c17b:\n                    local_c4 = iVar22;" (statement_identifier "LAB_0009c17b") (: ":") (expression_statement "local_c4 = iVar22;" (assignment_expression "local_c4 = iVar22" (identifier "local_c4") (= "=") (identifier "iVar22")) (; ";"))) (expression_statement "local_f0[1] = pcVar12;" (assignment_expression "local_f0[1] = pcVar12" (subscript_expression "local_f0[1]" (identifier "local_f0") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "pcVar12")) (; ";")) (expression_statement "local_c8 = iVar21;" (assignment_expression "local_c8 = iVar21" (identifier "local_c8") (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (param_3[4] != 0) {\n                      FUN_0004c8d0();\n                    }" (if "if") (parenthesized_expression "(param_3[4] != 0)" (( "(") (binary_expression "param_3[4] != 0" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_0004c8d0();\n                    }" ({ "{") (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" (identifier "FUN_0004c8d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" (identifier "FUN_0004c9a0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0004c9a0();" (call_expression "FUN_0004c9a0()" (identifier "FUN_0004c9a0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0009c1b2:\n                    local_17c = (uint)*(ushort *)(local_158 + 0x34);" (statement_identifier "LAB_0009c1b2") (: ":") (expression_statement "local_17c = (uint)*(ushort *)(local_158 + 0x34);" (assignment_expression "local_17c = (uint)*(ushort *)(local_158 + 0x34)" (identifier "local_17c") (= "=") (binary_expression "(uint)*(ushort *)(local_158 + 0x34)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(local_158 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x34)" (( "(") (binary_expression "local_158 + 0x34" (identifier "local_158") (+ "+") (number_literal "0x34")) () ")"))))) (; ";"))) (} "}"))))) (labeled_statement "LAB_0009c1bb:\n                  iVar21 = iVar21 + 1;" (statement_identifier "LAB_0009c1bb") (: ":") (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar21 < (int)local_17c)" (( "(") (binary_expression "iVar21 < (int)local_17c" (identifier "iVar21") (< "<") (cast_expression "(int)local_17c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_17c"))) () ")")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0009c1d7:\n            if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" (statement_identifier "LAB_0009c1d7") (: ":") (if_statement "if (*(int *)(local_158 + 0x24) != 0) {\n              FUN_00062f10();\n            }" (if "if") (parenthesized_expression "(*(int *)(local_158 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(local_158 + 0x24) != 0" (pointer_expression "*(int *)(local_158 + 0x24)" (* "*") (cast_expression "(int *)(local_158 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_158 + 0x24)" (( "(") (binary_expression "local_158 + 0x24" (identifier "local_158") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00062f10();\n            }" ({ "{") (expression_statement "FUN_00062f10();" (call_expression "FUN_00062f10()" (identifier "FUN_00062f10") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")))) (} "}")))) (expression_statement "uVar35 = *(uint *)(iVar42 + 0x24);" (assignment_expression "uVar35 = *(uint *)(iVar42 + 0x24)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(iVar42 + 0x24)" (* "*") (cast_expression "(uint *)(iVar42 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x24)" (( "(") (binary_expression "iVar42 + 0x24" (identifier "iVar42") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((uVar35 & 0x1000) == 0) {\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }\n        else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0x1000) == 0)" (( "(") (binary_expression "(uVar35 & 0x1000) == 0" (parenthesized_expression "(uVar35 & 0x1000)" (( "(") (binary_expression "uVar35 & 0x1000" (identifier "uVar35") (& "&") (number_literal "0x1000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';\n        }" ({ "{") (expression_statement "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';" (assignment_expression "*(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04'" (pointer_expression "*(char *)((int)param_5 + 0x35)" (* "*") (cast_expression "(char *)((int)param_5 + 0x35)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (binary_expression "(uVar33 == 0) + '\x04'" (parenthesized_expression "(uVar33 == 0)" (( "(") (binary_expression "uVar33 == 0" (identifier "uVar33") (== "==") (number_literal "0")) () ")")) (+ "+") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'")))) (; ";")) (} "}")) (else_clause "else {\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" (else "else") (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        }" ({ "{") (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0xad")) (; ";")) (} "}")))) (expression_statement "param_5[0xe] = iVar41;" (assignment_expression "param_5[0xe] = iVar41" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;" (assignment_expression "*(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1" (pointer_expression "*(byte *)((int)param_5 + 0x36)" (* "*") (cast_expression "(byte *)((int)param_5 + 0x36)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x36)" (( "(") (binary_expression "(int)param_5 + 0x36" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x36")) () ")")))) (= "=") (binary_expression "(byte)(uVar35 >> 0x10) & 1" (call_expression "(byte)(uVar35 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar35 >> 0x10)" (( "(") (binary_expression "uVar35 >> 0x10" (identifier "uVar35") (>> ">>") (number_literal "0x10")) () ")"))) (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((uVar35 & 0xf) == 0) {\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" (if "if") (parenthesized_expression "((uVar35 & 0xf) == 0)" (( "(") (binary_expression "(uVar35 & 0xf) == 0" (parenthesized_expression "(uVar35 & 0xf)" (( "(") (binary_expression "uVar35 & 0xf" (identifier "uVar35") (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined1 *)((int)param_5 + 0x37) = 1;\n        }" ({ "{") (expression_statement "*(undefined1 *)((int)param_5 + 0x37) = 1;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x37) = 1" (pointer_expression "*(undefined1 *)((int)param_5 + 0x37)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x37)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x37)" (( "(") (binary_expression "(int)param_5 + 0x37" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x37")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (!bVar48) {\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" (if "if") (parenthesized_expression "(!bVar48)" (( "(") (unary_expression "!bVar48" (! "!") (identifier "bVar48")) () ")")) (compound_statement "{\n          local_194 = (uint *)0x1;\n          goto LAB_0009b1f0;\n        }" ({ "{") (expression_statement "local_194 = (uint *)0x1;" (assignment_expression "local_194 = (uint *)0x1" (identifier "local_194") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" (else "else") (compound_statement "{\n        iVar41 = **(int **)(iVar42 + 0x30);\n        iVar20 = param_1[0xb] + 1;\n        param_1[0xb] = iVar20;\n        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);\n        if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }\n        FUN_000493f0(param_5[4],iVar42);\n        *(undefined1 *)((int)param_5 + 0x35) = 0xad;\n        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }\n      }" ({ "{") (expression_statement "iVar41 = **(int **)(iVar42 + 0x30);" (assignment_expression "iVar41 = **(int **)(iVar42 + 0x30)" (identifier "iVar41") (= "=") (pointer_expression "**(int **)(iVar42 + 0x30)" (* "*") (pointer_expression "*(int **)(iVar42 + 0x30)" (* "*") (cast_expression "(int **)(iVar42 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")")))))) (; ";")) (expression_statement "iVar20 = param_1[0xb] + 1;" (assignment_expression "iVar20 = param_1[0xb] + 1" (identifier "iVar20") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = iVar20;" (assignment_expression "param_1[0xb] = iVar20" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar42 = FUN_0009a2d0(0,uVar33,iVar20);" (assignment_expression "iVar42 = FUN_0009a2d0(0,uVar33,iVar20)" (identifier "iVar42") (= "=") (call_expression "FUN_0009a2d0(0,uVar33,iVar20)" (identifier "FUN_0009a2d0") (argument_list "(0,uVar33,iVar20)" (( "(") (number_literal "0") (, ",") (identifier "uVar33") (, ",") (identifier "iVar20") () ")")))) (; ";")) (if_statement "if ((iVar20 != iVar42) && (iVar20 != 0)) {\n          FUN_000254e0();\n        }" (if "if") (parenthesized_expression "((iVar20 != iVar42) && (iVar20 != 0))" (( "(") (binary_expression "(iVar20 != iVar42) && (iVar20 != 0)" (parenthesized_expression "(iVar20 != iVar42)" (( "(") (binary_expression "iVar20 != iVar42" (identifier "iVar20") (!= "!=") (identifier "iVar42")) () ")")) (&& "&&") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          FUN_000254e0();\n        }" ({ "{") (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" (identifier "FUN_000254e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000493f0(param_5[4],iVar42);" (call_expression "FUN_000493f0(param_5[4],iVar42)" (identifier "FUN_000493f0") (argument_list "(param_5[4],iVar42)" (( "(") (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "iVar42") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xad;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xad" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0xad")) (; ";")) (if_statement "if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" (if "if") (parenthesized_expression "((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0)" (( "(") (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&\n            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (binary_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x2c) & param_5[0x14])" (( "(") (binary_expression "*(uint *)(iVar41 + 0x2c) & param_5[0x14]" (pointer_expression "*(uint *)(iVar41 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar41 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x2c)" (( "(") (binary_expression "iVar41 + 0x2c" (identifier "iVar41") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]"))) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0" (parenthesized_expression "(*(uint *)(iVar41 + 0x28) & param_5[0x13])" (( "(") (binary_expression "*(uint *)(iVar41 + 0x28) & param_5[0x13]" (pointer_expression "*(uint *)(iVar41 + 0x28)" (* "*") (cast_expression "(uint *)(iVar41 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x28)" (( "(") (binary_expression "iVar41 + 0x28" (identifier "iVar41") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]"))) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;\n          local_158 = 0;\n          local_194 = (uint *)0x2;\n          goto LAB_0009b1f0;\n        }" ({ "{") (expression_statement "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;" (assignment_expression "*(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" (* "*") (cast_expression "(ushort *)(iVar41 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 10)" (( "(") (binary_expression "iVar41 + 10" (identifier "iVar41") (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "*(ushort *)(iVar41 + 10) | 4" (pointer_expression "*(ushort *)(iVar41 + 10)" (* "*") (cast_expression "(ushort *)(iVar41 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 10)" (( "(") (binary_expression "iVar41 + 10" (identifier "iVar41") (+ "+") (number_literal "10")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (goto_statement "goto LAB_0009b1f0;" (goto "goto") (statement_identifier "LAB_0009b1f0") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" (else "else") (compound_statement "{\n      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);\n      iVar20 = FUN_00025510();\n      local_154 = param_5[3];\n      if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }\nLAB_0009af4f:\n      FUN_00049630(iVar20);\n      FUN_00049630(iVar20 + 1);\n      cVar15 = *(char *)(iVar42 + 0x1c);\n      FUN_000493f0(local_154,iVar20);\n      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);\n      *(undefined1 *)(iVar42 + 0x1c) = 0;\n      param_5[0xe] = iVar9;\n      uVar35 = uVar35 - 1;\n      iVar34 = uVar35 * 4;\n      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;\n      local_184 = param_5[0x10];\n      param_5[0xf] = param_2[0x1a];\n      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }\n    }" ({ "{") (expression_statement "uVar35 = (uint)*(ushort *)(iVar42 + 0x28);" (assignment_expression "uVar35 = (uint)*(ushort *)(iVar42 + 0x28)" (identifier "uVar35") (= "=") (binary_expression "(uint)*(ushort *)(iVar42 + 0x28)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar42 + 0x28)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x28)" (( "(") (binary_expression "iVar42 + 0x28" (identifier "iVar42") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar20 = FUN_00025510();" (assignment_expression "iVar20 = FUN_00025510()" (identifier "iVar20") (= "=") (call_expression "FUN_00025510()" (identifier "FUN_00025510") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_154 = param_5[3];" (assignment_expression "local_154 = param_5[3]" (identifier "local_154") (= "=") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (uVar35 != 0) {\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" (if "if") (parenthesized_expression "(uVar35 != 0)" (( "(") (binary_expression "uVar35 != 0" (identifier "uVar35") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar45 = 0;\n        do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);\n      }" ({ "{") (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" (identifier "uVar45") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        } while (uVar35 != uVar45);" (do "do") (compound_statement "{\n          while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }\n          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }\n          uVar45 = uVar45 + 1;\n          FUN_00095030(1);\n        }" ({ "{") (while_statement "while( true ) {\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);\n            if (iVar34 != 0) break;\nLAB_0009af14:\n            uVar45 = uVar45 + 1;\n            if (uVar35 == uVar45) goto LAB_0009af4f;\n          }" ({ "{") (expression_statement "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);" (assignment_expression "iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" (identifier "iVar34") (= "=") (pointer_expression "*(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar42 + 0x30) + uVar45 * 4)" (( "(") (binary_expression "*(int *)(iVar42 + 0x30) + uVar45 * 4" (pointer_expression "*(int *)(iVar42 + 0x30)" (* "*") (cast_expression "(int *)(iVar42 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "uVar45 * 4" (identifier "uVar45") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar34 != 0) break;" (if "if") (parenthesized_expression "(iVar34 != 0)" (( "(") (binary_expression "iVar34 != 0" (identifier "iVar34") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0009af14:\n            uVar45 = uVar45 + 1;" (statement_identifier "LAB_0009af14") (: ":") (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" (identifier "uVar45") (= "=") (binary_expression "uVar45 + 1" (identifier "uVar45") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (uVar35 == uVar45) goto LAB_0009af4f;" (if "if") (parenthesized_expression "(uVar35 == uVar45)" (( "(") (binary_expression "uVar35 == uVar45" (identifier "uVar35") (== "==") (identifier "uVar45")) () ")")) (goto_statement "goto LAB_0009af4f;" (goto "goto") (statement_identifier "LAB_0009af4f") (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar34 + 0xc) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar34 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar34 + 0xc) & 1)" (( "(") (binary_expression "*(byte *)(iVar34 + 0xc) & 1" (pointer_expression "*(byte *)(iVar34 + 0xc)" (* "*") (cast_expression "(byte *)(iVar34 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0xc)" (( "(") (binary_expression "iVar34 + 0xc" (identifier "iVar34") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);\n            local_154 = param_5[4];\n            goto LAB_0009af14;\n          }" ({ "{") (expression_statement "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);" (call_expression "FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45)" (identifier "FUN_0009a2d0") (argument_list "(uVar45,uVar33,iVar20 + 2 + uVar45)" (( "(") (identifier "uVar45") (, ",") (identifier "uVar33") (, ",") (binary_expression "iVar20 + 2 + uVar45" (binary_expression "iVar20 + 2" (identifier "iVar20") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar45")) () ")"))) (; ";")) (expression_statement "local_154 = param_5[4];" (assignment_expression "local_154 = param_5[4]" (identifier "local_154") (= "=") (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_0009af14;" (goto "goto") (statement_identifier "LAB_0009af14") (; ";")) (} "}"))) (expression_statement "uVar45 = uVar45 + 1;" (assignment_expression "uVar45 = uVar45 + 1" (identifier "uVar45") (= "=") (binary_expression "uVar45 + 1" (identifier "uVar45") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00095030(1);" (call_expression "FUN_00095030(1)" (identifier "FUN_00095030") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar35 != uVar45)" (( "(") (binary_expression "uVar35 != uVar45" (identifier "uVar35") (!= "!=") (identifier "uVar45")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0009af4f:\n      FUN_00049630(iVar20);" (statement_identifier "LAB_0009af4f") (: ":") (expression_statement "FUN_00049630(iVar20);" (call_expression "FUN_00049630(iVar20)" (identifier "FUN_00049630") (argument_list "(iVar20)" (( "(") (identifier "iVar20") () ")"))) (; ";"))) (expression_statement "FUN_00049630(iVar20 + 1);" (call_expression "FUN_00049630(iVar20 + 1)" (identifier "FUN_00049630") (argument_list "(iVar20 + 1)" (( "(") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "cVar15 = *(char *)(iVar42 + 0x1c);" (assignment_expression "cVar15 = *(char *)(iVar42 + 0x1c)" (identifier "cVar15") (= "=") (pointer_expression "*(char *)(iVar42 + 0x1c)" (* "*") (cast_expression "(char *)(iVar42 + 0x1c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1c)" (( "(") (binary_expression "iVar42 + 0x1c" (identifier "iVar42") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "FUN_000493f0(local_154,iVar20);" (call_expression "FUN_000493f0(local_154,iVar20)" (identifier "FUN_000493f0") (argument_list "(local_154,iVar20)" (( "(") (identifier "local_154") (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);" (call_expression "FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9)" (identifier "FUN_000436c0") (argument_list "(-(uint)(cVar15 == '\0') | 0xfffffff9)" (( "(") (binary_expression "-(uint)(cVar15 == '\0') | 0xfffffff9" (unary_expression "-(uint)(cVar15 == '\0')" (- "-") (call_expression "(uint)(cVar15 == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(cVar15 == '\0')" (( "(") (binary_expression "cVar15 == '\0'" (identifier "cVar15") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (| "|") (number_literal "0xfffffff9")) () ")"))) (; ";")) (expression_statement "*(undefined1 *)(iVar42 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(iVar42 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(iVar42 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(iVar42 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1c)" (( "(") (binary_expression "iVar42 + 0x1c" (identifier "iVar42") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_5[0xe] = iVar9;" (assignment_expression "param_5[0xe] = iVar9" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 - 1" (identifier "uVar35") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar34 = uVar35 * 4;" (assignment_expression "iVar34 = uVar35 * 4" (identifier "iVar34") (= "=") (binary_expression "uVar35 * 4" (identifier "uVar35") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;" (assignment_expression "*(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (pointer_expression "*(byte *)((int)param_5 + 0x35)" (* "*") (cast_expression "(byte *)((int)param_5 + 0x35)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (binary_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad" (parenthesized_expression "(-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U)" (( "(") (binary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U" (unary_expression "-(*(char *)((int)param_3 + 0x2e) == '\0')" (- "-") (parenthesized_expression "(*(char *)((int)param_3 + 0x2e) == '\0')" (( "(") (binary_expression "*(char *)((int)param_3 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_3 + 0x2e)" (* "*") (cast_expression "(char *)((int)param_3 + 0x2e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0x2e)" (( "(") (binary_expression "(int)param_3 + 0x2e" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0x2e")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) (& "&") (number_literal "0x90U")) () ")")) (+ "+") (number_literal "0xad"))) (; ";")) (expression_statement "local_184 = param_5[0x10];" (assignment_expression "local_184 = param_5[0x10]" (identifier "local_184") (= "=") (subscript_expression "param_5[0x10]" (identifier "param_5") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "param_5[0xf] = param_2[0x1a];" (assignment_expression "param_5[0xf] = param_2[0x1a]" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (for_statement "for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar35 != 0xffffffff" (identifier "uVar35") (!= "!=") (number_literal "0xffffffff")) (; ";") (assignment_expression "uVar35 = uVar35 - 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 - 1" (identifier "uVar35") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }\n        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }\nLAB_0009b15d:\n        iVar34 = iVar34 + -4;\n      }" ({ "{") (while_statement "while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0) {\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" (while "while") (parenthesized_expression "(piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0)" (( "(") (comma_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),\n              (*(byte *)(piVar31 + 3) & 1) != 0" (assignment_expression "piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34)" (identifier "piVar31") (= "=") (pointer_expression "*(int **)(*(int *)(iVar42 + 0x30) + iVar34)" (* "*") (cast_expression "(int **)(*(int *)(iVar42 + 0x30) + iVar34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar42 + 0x30) + iVar34)" (( "(") (binary_expression "*(int *)(iVar42 + 0x30) + iVar34" (pointer_expression "*(int *)(iVar42 + 0x30)" (* "*") (cast_expression "(int *)(iVar42 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x30)" (( "(") (binary_expression "iVar42 + 0x30" (identifier "iVar42") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (identifier "iVar34")) () ")"))))) (, ",") (binary_expression "(*(byte *)(piVar31 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(piVar31 + 3) & 1)" (( "(") (binary_expression "*(byte *)(piVar31 + 3) & 1" (pointer_expression "*(byte *)(piVar31 + 3)" (* "*") (cast_expression "(byte *)(piVar31 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31 + 3)" (( "(") (binary_expression "piVar31 + 3" (identifier "piVar31") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          local_184 = local_184 + -1;\n          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;\n          pcVar10 = *(char **)(*piVar31 + 0xc);\n          cVar15 = *pcVar10;\n          if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }\n          if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }\n          iVar21 = **(int **)(pcVar10 + 0x14);\nLAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;\n          uVar35 = uVar35 - 1;\n          iVar34 = iVar34 + -4;\n          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;\n        }" ({ "{") (expression_statement "local_184 = local_184 + -1;" (assignment_expression "local_184 = local_184 + -1" (identifier "local_184") (= "=") (binary_expression "local_184 + -1" (identifier "local_184") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))\n          goto LAB_0009b18a;" (if "if") (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" (( "(") (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" (( "(") (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35")) (< "<") (number_literal "0x10")) () ")")) (&& "&&") (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" (( "(") (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x1e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1e)" (( "(") (binary_expression "iVar42 + 0x1e" (identifier "iVar42") (+ "+") (number_literal "0x1e")) () ")")))) (>> ">>") (parenthesized_expression "(uVar35 & 0x1f)" (( "(") (binary_expression "uVar35 & 0x1f" (identifier "uVar35") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009b18a;" (goto "goto") (statement_identifier "LAB_0009b18a") (; ";"))) (expression_statement "pcVar10 = *(char **)(*piVar31 + 0xc);" (assignment_expression "pcVar10 = *(char **)(*piVar31 + 0xc)" (identifier "pcVar10") (= "=") (pointer_expression "*(char **)(*piVar31 + 0xc)" (* "*") (cast_expression "(char **)(*piVar31 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar31 + 0xc)" (( "(") (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "cVar15 = *pcVar10;" (assignment_expression "cVar15 = *pcVar10" (identifier "cVar15") (= "=") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10"))) (; ";")) (if_statement "if (cVar15 == -0x53) {\n            cVar15 = pcVar10[2];\n          }" (if "if") (parenthesized_expression "(cVar15 == -0x53)" (( "(") (binary_expression "cVar15 == -0x53" (identifier "cVar15") (== "==") (number_literal "-0x53")) () ")")) (compound_statement "{\n            cVar15 = pcVar10[2];\n          }" ({ "{") (expression_statement "cVar15 = pcVar10[2];" (assignment_expression "cVar15 = pcVar10[2]" (identifier "cVar15") (= "=") (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (if_statement "if (cVar15 != -0x52) {\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" (if "if") (parenthesized_expression "(cVar15 != -0x52)" (( "(") (binary_expression "cVar15 != -0x52" (identifier "cVar15") (!= "!=") (number_literal "-0x52")) () ")")) (compound_statement "{\n            if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }\nLAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }\n            iVar21 = FUN_000556e0();\n            if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }\n            goto LAB_0009b15d;\n          }" ({ "{") (if_statement "if (cVar15 == -0x78) {\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" (if "if") (parenthesized_expression "(cVar15 == -0x78)" (( "(") (binary_expression "cVar15 == -0x78" (identifier "cVar15") (== "==") (number_literal "-0x78")) () ")")) (compound_statement "{\n              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);\n              goto LAB_0009bc51;\n            }" ({ "{") (expression_statement "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);" (assignment_expression "iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (pointer_expression "*(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (* "*") (cast_expression "(int **)(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar10 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(pcVar10 + 0x14) + 0x1c" (pointer_expression "*(int *)(pcVar10 + 0x14)" (* "*") (cast_expression "(int *)(pcVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0009bc51;" (goto "goto") (statement_identifier "LAB_0009bc51") (; ";")) (} "}"))) (labeled_statement "LAB_0009b066:\n            if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" (statement_identifier "LAB_0009b066") (: ":") (if_statement "if (*(char *)(iVar41 + 0x4d) == '\0') {\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" (if "if") (parenthesized_expression "(*(char *)(iVar41 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar41 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar41 + 0x4d)" (* "*") (cast_expression "(char *)(iVar41 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar41 + 0x4d)" (( "(") (binary_expression "iVar41 + 0x4d" (identifier "iVar41") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);\n              if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }\n              puVar26 = &DAT_001075d0;\n              if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }\n              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));\n            }" ({ "{") (expression_statement "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);" (assignment_expression "iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(local_184 * 0x14 + param_5[0x11] + 4)" (* "*") (cast_expression "(int *)(local_184 * 0x14 + param_5[0x11] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_184 * 0x14 + param_5[0x11] + 4)" (( "(") (binary_expression "local_184 * 0x14 + param_5[0x11] + 4" (binary_expression "local_184 * 0x14 + param_5[0x11]" (binary_expression "local_184 * 0x14" (identifier "local_184") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "param_5[0x11]" (identifier "param_5") ([ "[") (number_literal "0x11") (] "]"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar21 < 0) {\n                iVar21 = param_2[0x1a] + -1;\n              }" (if "if") (parenthesized_expression "(iVar21 < 0)" (( "(") (binary_expression "iVar21 < 0" (identifier "iVar21") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                iVar21 = param_2[0x1a] + -1;\n              }" ({ "{") (expression_statement "iVar21 = param_2[0x1a] + -1;" (assignment_expression "iVar21 = param_2[0x1a] + -1" (identifier "iVar21") (= "=") (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);\n              }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + iVar21 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + iVar21 * 0x14)" (( "(") (binary_expression "param_2[0x19] + iVar21 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar21 * 0x14" (identifier "iVar21") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));" (call_expression "FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" (identifier "FUN_000493f0") (argument_list "(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(puVar26 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar26 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(puVar26 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar26 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0xc)" (( "(") (binary_expression "puVar26 + 0xc" (identifier "puVar26") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}")))) (expression_statement "iVar21 = FUN_000556e0();" (assignment_expression "iVar21 = FUN_000556e0()" (identifier "iVar21") (= "=") (call_expression "FUN_000556e0()" (identifier "FUN_000556e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar21 != 0) {\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);\n              local_b8 = 0;\n              local_b4 = (code *)0x0;\n              iVar22 = FUN_0002fd80();\n              *(int *)(iVar21 + 0x10) = iVar22;\n              if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }\n              *(undefined4 *)(iVar21 + 0xc) = 0;\n              FUN_00053f30();\n            }" ({ "{") (expression_statement "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc)" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar21 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0xc)" (( "(") (binary_expression "iVar21 + 0xc" (identifier "iVar21") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*piVar31 + 0xc)" (* "*") (cast_expression "(undefined4 *)(*piVar31 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar31 + 0xc)" (( "(") (binary_expression "*piVar31 + 0xc" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b4 = (code *)0x0;" (assignment_expression "local_b4 = (code *)0x0" (identifier "local_b4") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar22 = FUN_0002fd80();" (assignment_expression "iVar22 = FUN_0002fd80()" (identifier "iVar22") (= "=") (call_expression "FUN_0002fd80()" (identifier "FUN_0002fd80") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(iVar21 + 0x10) = iVar22;" (assignment_expression "*(int *)(iVar21 + 0x10) = iVar22" (pointer_expression "*(int *)(iVar21 + 0x10)" (* "*") (cast_expression "(int *)(iVar21 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x10)" (( "(") (binary_expression "iVar21 + 0x10" (identifier "iVar21") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (if_statement "if (iVar22 != 0) {\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;\n                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);\n              }" ({ "{") (expression_statement "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;" (assignment_expression "*(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35" (pointer_expression "*(uint *)(iVar22 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar22 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar22 + 0x1c)" (( "(") (binary_expression "iVar22 + 0x1c" (identifier "iVar22") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "iVar20 + 2 + uVar35" (binary_expression "iVar20 + 2" (identifier "iVar20") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar35"))) (; ";")) (expression_statement "FUN_00092bc0(param_1,iVar21,param_5[6],0x10);" (call_expression "FUN_00092bc0(param_1,iVar21,param_5[6],0x10)" (identifier "FUN_00092bc0") (argument_list "(param_1,iVar21,param_5[6],0x10)" (( "(") (identifier "param_1") (, ",") (identifier "iVar21") (, ",") (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar21 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar21 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar21 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar21 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0xc)" (( "(") (binary_expression "iVar21 + 0xc" (identifier "iVar21") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0009b15d;" (goto "goto") (statement_identifier "LAB_0009b15d") (; ";")) (} "}"))) (expression_statement "iVar21 = **(int **)(pcVar10 + 0x14);" (assignment_expression "iVar21 = **(int **)(pcVar10 + 0x14)" (identifier "iVar21") (= "=") (pointer_expression "**(int **)(pcVar10 + 0x14)" (* "*") (pointer_expression "*(int **)(pcVar10 + 0x14)" (* "*") (cast_expression "(int **)(pcVar10 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x14)" (( "(") (binary_expression "pcVar10 + 0x14" (identifier "pcVar10") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (labeled_statement "LAB_0009bc51:\n          if (iVar21 == 1) goto LAB_0009b066;" (statement_identifier "LAB_0009bc51") (: ":") (if_statement "if (iVar21 == 1) goto LAB_0009b066;" (if "if") (parenthesized_expression "(iVar21 == 1)" (( "(") (binary_expression "iVar21 == 1" (identifier "iVar21") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0009b066;" (goto "goto") (statement_identifier "LAB_0009b066") (; ";")))) (expression_statement "uVar35 = uVar35 - 1;" (assignment_expression "uVar35 = uVar35 - 1" (identifier "uVar35") (= "=") (binary_expression "uVar35 - 1" (identifier "uVar35") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" (identifier "iVar34") (= "=") (binary_expression "iVar34 + -4" (identifier "iVar34") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (uVar35 == 0xffffffff) goto LAB_0009b1e0;" (if "if") (parenthesized_expression "(uVar35 == 0xffffffff)" (( "(") (binary_expression "uVar35 == 0xffffffff" (identifier "uVar35") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_0009b1e0;" (goto "goto") (statement_identifier "LAB_0009b1e0") (; ";"))) (} "}"))) (if_statement "if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {\nLAB_0009b18a:\n          FUN_00020250();\n        }" (if "if") (parenthesized_expression "(((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))" (( "(") (binary_expression "((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (parenthesized_expression "((int)uVar35 < 0x10)" (( "(") (binary_expression "(int)uVar35 < 0x10" (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35")) (< "<") (number_literal "0x10")) () ")")) (&& "&&") (parenthesized_expression "((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0" (parenthesized_expression "(*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1)" (( "(") (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1" (binary_expression "*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f)" (pointer_expression "*(ushort *)(iVar42 + 0x1e)" (* "*") (cast_expression "(ushort *)(iVar42 + 0x1e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0x1e)" (( "(") (binary_expression "iVar42 + 0x1e" (identifier "iVar42") (+ "+") (number_literal "0x1e")) () ")")))) (>> ">>") (parenthesized_expression "(uVar35 & 0x1f)" (( "(") (binary_expression "uVar35 & 0x1f" (identifier "uVar35") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0009b18a:\n          FUN_00020250();\n        }" ({ "{") (labeled_statement "LAB_0009b18a:\n          FUN_00020250();" (statement_identifier "LAB_0009b18a") (: ":") (expression_statement "FUN_00020250();" (call_expression "FUN_00020250()" (identifier "FUN_00020250") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_0009b15d:\n        iVar34 = iVar34 + -4;" (statement_identifier "LAB_0009b15d") (: ":") (expression_statement "iVar34 = iVar34 + -4;" (assignment_expression "iVar34 = iVar34 + -4" (identifier "iVar34") (= "=") (binary_expression "iVar34 + -4" (identifier "iVar34") (+ "+") (number_literal "-4"))) (; ";"))) (} "}"))) (} "}")))) (labeled_statement "LAB_0009b1e0:\n    local_158 = 0;" (statement_identifier "LAB_0009b1e0") (: ":") (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (} "}")) (else_clause "else {\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" (else "else") (compound_statement "{\n    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));\n    iVar41 = FUN_00049630(iVar20);\n    param_5[0xf] = iVar41;\n    *(undefined1 *)((int)param_5 + 0x35) = 0xb;\n    local_158 = 0;\n    local_194 = (uint *)0x2;\n  }" ({ "{") (expression_statement "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));" (call_expression "FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20))" (identifier "FUN_000493f0") (argument_list "(0,*(undefined4 *)(iVar34 + 0x20))" (( "(") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(iVar34 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar34 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x20)" (( "(") (binary_expression "iVar34 + 0x20" (identifier "iVar34") (+ "+") (number_literal "0x20")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar41 = FUN_00049630(iVar20);" (assignment_expression "iVar41 = FUN_00049630(iVar20)" (identifier "iVar41") (= "=") (call_expression "FUN_00049630(iVar20)" (identifier "FUN_00049630") (argument_list "(iVar20)" (( "(") (identifier "iVar20") () ")")))) (; ";")) (expression_statement "param_5[0xf] = iVar41;" (assignment_expression "param_5[0xf] = iVar41" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "iVar41")) (; ";")) (expression_statement "*(undefined1 *)((int)param_5 + 0x35) = 0xb;" (assignment_expression "*(undefined1 *)((int)param_5 + 0x35) = 0xb" (pointer_expression "*(undefined1 *)((int)param_5 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_5 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x35)" (( "(") (binary_expression "(int)param_5 + 0x35" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_194 = (uint *)0x2;" (assignment_expression "local_194 = (uint *)0x2" (identifier "local_194") (= "=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (} "}")))) (labeled_statement "LAB_0009b1f0:\n  do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" (statement_identifier "LAB_0009b1f0") (: ":") (do_statement "do {\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  } while (local_17c != 0);" (do "do") (compound_statement "{\n    iVar41 = param_3[0x15];\n    piVar31 = (int *)param_3[0x17];\n    if (iVar41 < 1) goto LAB_0009b538;\n    local_17c = 0;\n    do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\nLAB_0009b30a:\n    local_194 = (uint *)local_17c;\n  }" ({ "{") (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_3[0x17]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[0x17]" (identifier "param_3") ([ "[") (number_literal "0x17") (] "]")))) (; ";")) (if_statement "if (iVar41 < 1) goto LAB_0009b538;" (if "if") (parenthesized_expression "(iVar41 < 1)" (( "(") (binary_expression "iVar41 < 1" (identifier "iVar41") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0009b538;" (goto "goto") (statement_identifier "LAB_0009b538") (; ";"))) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" (identifier "local_17c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" (do "do") (compound_statement "{\n      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }\n      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }\n      piVar31 = piVar31 + 0xc;\n      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;\n      iVar41 = iVar41 + -1;\n    }" ({ "{") (while_statement "while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" (while "while") (parenthesized_expression "(uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0)" (( "(") (comma_expression "uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)((int)piVar31 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar31 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 10)" (( "(") (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "10")) () ")"))))) (, ",") (comma_expression "uVar35 = local_17c, (uVar32 & 6) != 0" (assignment_expression "uVar35 = local_17c" (identifier "uVar35") (= "=") (identifier "local_17c")) (, ",") (binary_expression "(uVar32 & 6) != 0" (parenthesized_expression "(uVar32 & 6)" (( "(") (binary_expression "uVar32 & 6" (identifier "uVar32") (& "&") (number_literal "6")) () ")")) (!= "!=") (number_literal "0")))) () ")")) (compound_statement "{\nLAB_0009b2d5:\n        local_17c = uVar35;\n        piVar31 = piVar31 + 0xc;\n        iVar41 = iVar41 + -1;\n        if (iVar41 == 0) goto LAB_0009b30a;\n      }" ({ "{") (labeled_statement "LAB_0009b2d5:\n        local_17c = uVar35;" (statement_identifier "LAB_0009b2d5") (: ":") (expression_statement "local_17c = uVar35;" (assignment_expression "local_17c = uVar35" (identifier "local_17c") (= "=") (identifier "uVar35")) (; ";"))) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" (identifier "piVar31") (= "=") (binary_expression "piVar31 + 0xc" (identifier "piVar31") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" (identifier "iVar41") (= "=") (binary_expression "iVar41 + -1" (identifier "iVar41") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar41 == 0) goto LAB_0009b30a;" (if "if") (parenthesized_expression "(iVar41 == 0)" (( "(") (binary_expression "iVar41 == 0" (identifier "iVar41") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009b30a;" (goto "goto") (statement_identifier "LAB_0009b30a") (; ";"))) (} "}"))) (if_statement "if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" (if "if") (parenthesized_expression "((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0)" (( "(") (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0" (binary_expression "(piVar31[0xb] & param_5[0x14]) == 0" (parenthesized_expression "(piVar31[0xb] & param_5[0x14])" (( "(") (binary_expression "piVar31[0xb] & param_5[0x14]" (subscript_expression "piVar31[0xb]" (identifier "piVar31") ([ "[") (number_literal "0xb") (] "]")) (& "&") (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]"))) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(piVar31[10] & param_5[0x13]) == 0" (parenthesized_expression "(piVar31[10] & param_5[0x13])" (( "(") (binary_expression "piVar31[10] & param_5[0x13]" (subscript_expression "piVar31[10]" (identifier "piVar31") ([ "[") (number_literal "10") (] "]")) (& "&") (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]"))) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        iVar42 = *piVar31;\n        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;\n        if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;\n        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }\n        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;\n        goto LAB_0009b2d5;\n      }" ({ "{") (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" (identifier "iVar42") (= "=") (pointer_expression "*piVar31" (* "*") (identifier "piVar31"))) (; ";")) (if_statement "if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;" (if "if") (parenthesized_expression "(((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0))" (( "(") (binary_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&\n           ((*(byte *)(iVar42 + 4) & 1) == 0)" (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" (( "(") (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" (* "*") (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" (( "(") (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar8")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar42 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar42 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar42 + 4) & 1)" (( "(") (binary_expression "*(byte *)(iVar42 + 4) & 1" (pointer_expression "*(byte *)(iVar42 + 4)" (* "*") (cast_expression "(byte *)(iVar42 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 4)" (( "(") (binary_expression "iVar42 + 4" (identifier "iVar42") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009b2d5;" (goto "goto") (statement_identifier "LAB_0009b2d5") (; ";"))) (if_statement "if (local_194 == (uint *)0x1) {\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }\n        else if (local_194 != (uint *)0x3) goto LAB_0009b594;" (if "if") (parenthesized_expression "(local_194 == (uint *)0x1)" (( "(") (binary_expression "local_194 == (uint *)0x1" (identifier "local_194") (== "==") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n          local_d0 = param_5[1];\n          uVar45 = 0;\n          do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);\n          local_d4 = local_158;\n          local_b4 = FUN_00025680;\n          local_a0 = &local_d4;\n          if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }\n          uVar32 = *(ushort *)((int)piVar31 + 10);\nLAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }\n        }" ({ "{") (expression_statement "local_d0 = param_5[1];" (assignment_expression "local_d0 = param_5[1]" (identifier "local_d0") (= "=") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" (identifier "uVar45") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          } while (uVar45 < 0x18);" (do "do") (compound_statement "{\n            *(undefined4 *)((int)&local_b8 + uVar45) = 0;\n            uVar45 = uVar45 + 4;\n          }" ({ "{") (expression_statement "*(undefined4 *)((int)&local_b8 + uVar45) = 0;" (assignment_expression "*(undefined4 *)((int)&local_b8 + uVar45) = 0" (pointer_expression "*(undefined4 *)((int)&local_b8 + uVar45)" (* "*") (cast_expression "(undefined4 *)((int)&local_b8 + uVar45)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_b8 + uVar45)" (( "(") (binary_expression "(int)&local_b8 + uVar45" (cast_expression "(int)&local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_b8" (& "&") (identifier "local_b8"))) (+ "+") (identifier "uVar45")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar45 = uVar45 + 4;" (assignment_expression "uVar45 = uVar45 + 4" (identifier "uVar45") (= "=") (binary_expression "uVar45 + 4" (identifier "uVar45") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar45 < 0x18)" (( "(") (binary_expression "uVar45 < 0x18" (identifier "uVar45") (< "<") (number_literal "0x18")) () ")")) (; ";")) (expression_statement "local_d4 = local_158;" (assignment_expression "local_d4 = local_158" (identifier "local_d4") (= "=") (identifier "local_158")) (; ";")) (expression_statement "local_b4 = FUN_00025680;" (assignment_expression "local_b4 = FUN_00025680" (identifier "local_b4") (= "=") (identifier "FUN_00025680")) (; ";")) (expression_statement "local_a0 = &local_d4;" (assignment_expression "local_a0 = &local_d4" (identifier "local_a0") (= "=") (pointer_expression "&local_d4" (& "&") (identifier "local_d4"))) (; ";")) (if_statement "if (iVar42 != 0) {\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" (if "if") (parenthesized_expression "(iVar42 != 0)" (( "(") (binary_expression "iVar42 != 0" (identifier "iVar42") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0004c8d0();\n            if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }\n          }" ({ "{") (expression_statement "FUN_0004c8d0();" (call_expression "FUN_0004c8d0()" (identifier "FUN_0004c8d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((short)local_a4 != 0) {\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" (if "if") (parenthesized_expression "((short)local_a4 != 0)" (( "(") (binary_expression "(short)local_a4 != 0" (cast_expression "(short)local_a4" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_a4")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_17c = 2;\n              uVar35 = local_17c;\n              goto LAB_0009b2d5;\n            }" ({ "{") (expression_statement "local_17c = 2;" (assignment_expression "local_17c = 2" (identifier "local_17c") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" (identifier "uVar35") (= "=") (identifier "local_17c")) (; ";")) (goto_statement "goto LAB_0009b2d5;" (goto "goto") (statement_identifier "LAB_0009b2d5") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar32 = *(ushort *)((int)piVar31 + 10);" (assignment_expression "uVar32 = *(ushort *)((int)piVar31 + 10)" (identifier "uVar32") (= "=") (pointer_expression "*(ushort *)((int)piVar31 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar31 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 10)" (( "(") (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "10")) () ")"))))) (; ";")) (labeled_statement "LAB_0009b594:\n          if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" (statement_identifier "LAB_0009b594") (: ":") (if_statement "if ((uVar32 & 0x1000) != 0) {\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" (if "if") (parenthesized_expression "((uVar32 & 0x1000) != 0)" (( "(") (binary_expression "(uVar32 & 0x1000) != 0" (parenthesized_expression "(uVar32 & 0x1000)" (( "(") (binary_expression "uVar32 & 0x1000" (identifier "uVar32") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar35 = 3;\n            if (local_17c != 0) {\n              uVar35 = local_17c;\n            }\n            goto LAB_0009b2d5;\n          }" ({ "{") (expression_statement "uVar35 = 3;" (assignment_expression "uVar35 = 3" (identifier "uVar35") (= "=") (number_literal "3")) (; ";")) (if_statement "if (local_17c != 0) {\n              uVar35 = local_17c;\n            }" (if "if") (parenthesized_expression "(local_17c != 0)" (( "(") (binary_expression "local_17c != 0" (identifier "local_17c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar35 = local_17c;\n            }" ({ "{") (expression_statement "uVar35 = local_17c;" (assignment_expression "uVar35 = local_17c" (identifier "uVar35") (= "=") (identifier "local_17c")) (; ";")) (} "}"))) (goto_statement "goto LAB_0009b2d5;" (goto "goto") (statement_identifier "LAB_0009b2d5") (; ";")) (} "}")))) (} "}")) (else_clause "else if (local_194 != (uint *)0x3) goto LAB_0009b594;" (else "else") (if_statement "if (local_194 != (uint *)0x3) goto LAB_0009b594;" (if "if") (parenthesized_expression "(local_194 != (uint *)0x3)" (( "(") (binary_expression "local_194 != (uint *)0x3" (identifier "local_194") (!= "!=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (goto_statement "goto LAB_0009b594;" (goto "goto") (statement_identifier "LAB_0009b594") (; ";"))))) (if_statement "if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }\n        else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" (if "if") (parenthesized_expression "(((uVar32 & 0x200) == 0) || (param_5[0xb] == 0))" (( "(") (binary_expression "((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)" (parenthesized_expression "((uVar32 & 0x200) == 0)" (( "(") (binary_expression "(uVar32 & 0x200) == 0" (parenthesized_expression "(uVar32 & 0x200)" (( "(") (binary_expression "uVar32 & 0x200" (identifier "uVar32") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_5[0xb] == 0)" (( "(") (binary_expression "param_5[0xb] == 0" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n        }" ({ "{") (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" (identifier "FUN_00092bc0") (argument_list "(param_1,iVar42,iVar40,0x10)" (( "(") (identifier "param_1") (, ",") (identifier "iVar42") (, ",") (identifier "iVar40") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" (else "else") (compound_statement "{\n          iVar20 = FUN_00049630(0);\n          FUN_00092bc0(param_1,iVar42,iVar40,0x10);\n          if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }\n        }" ({ "{") (expression_statement "iVar20 = FUN_00049630(0);" (assignment_expression "iVar20 = FUN_00049630(0)" (identifier "iVar20") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_00092bc0(param_1,iVar42,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,iVar42,iVar40,0x10)" (identifier "FUN_00092bc0") (argument_list "(param_1,iVar42,iVar40,0x10)" (( "(") (identifier "param_1") (, ",") (identifier "iVar42") (, ",") (identifier "iVar40") (, ",") (number_literal "0x10") () ")"))) (; ";")) (if_statement "if (iVar20 != 0) {\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }\n            puVar26 = &DAT_001075d0;\n            if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }\n            *(int *)(puVar26 + 8) = param_2[0x1a];\n          }" ({ "{") (if_statement "if (iVar20 < 0) {\n              iVar20 = param_2[0x1a] + -1;\n            }" (if "if") (parenthesized_expression "(iVar20 < 0)" (( "(") (binary_expression "iVar20 < 0" (identifier "iVar20") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              iVar20 = param_2[0x1a] + -1;\n            }" ({ "{") (expression_statement "iVar20 = param_2[0x1a] + -1;" (assignment_expression "iVar20 = param_2[0x1a] + -1" (identifier "iVar20") (= "=") (binary_expression "param_2[0x1a] + -1" (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar26 = &DAT_001075d0;" (assignment_expression "puVar26 = &DAT_001075d0" (identifier "puVar26") (= "=") (pointer_expression "&DAT_001075d0" (& "&") (identifier "DAT_001075d0"))) (; ";")) (if_statement "if (*(char *)(*param_2 + 0x4d) == '\0') {\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*param_2 + 0x4d) == '\0'" (pointer_expression "*(char *)(*param_2 + 0x4d)" (* "*") (cast_expression "(char *)(*param_2 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x4d)" (( "(") (binary_expression "*param_2 + 0x4d" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);\n            }" ({ "{") (expression_statement "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);" (assignment_expression "puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14)" (identifier "puVar26") (= "=") (cast_expression "(undefined1 *)(param_2[0x19] + iVar20 * 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x19] + iVar20 * 0x14)" (( "(") (binary_expression "param_2[0x19] + iVar20 * 0x14" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar20 * 0x14" (identifier "iVar20") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar26 + 8) = param_2[0x1a];" (assignment_expression "*(int *)(puVar26 + 8) = param_2[0x1a]" (pointer_expression "*(int *)(puVar26 + 8)" (* "*") (cast_expression "(int *)(puVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 8)" (( "(") (binary_expression "puVar26 + 8" (identifier "puVar26") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar31 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 10)" (( "(") (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)piVar31 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar31 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar31 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 10)" (( "(") (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "10")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (goto_statement "goto LAB_0009b2d5;" (goto "goto") (statement_identifier "LAB_0009b2d5") (; ";")) (} "}"))) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" (identifier "piVar31") (= "=") (binary_expression "piVar31 + 0xc" (identifier "piVar31") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;" (assignment_expression "*(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" (* "*") (cast_expression "(byte *)(param_3 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(byte *)(param_3 + 0xc) | 2" (pointer_expression "*(byte *)(param_3 + 0xc)" (* "*") (cast_expression "(byte *)(param_3 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" (identifier "iVar41") (= "=") (binary_expression "iVar41 + -1" (identifier "iVar41") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_0009b30a:\n    local_194 = (uint *)local_17c;" (statement_identifier "LAB_0009b30a") (: ":") (expression_statement "local_194 = (uint *)local_17c;" (assignment_expression "local_194 = (uint *)local_17c" (identifier "local_194") (= "=") (cast_expression "(uint *)local_17c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_17c"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_17c != 0)" (( "(") (binary_expression "local_17c != 0" (identifier "local_17c") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "piVar31 = (int *)param_3[0x17];" (assignment_expression "piVar31 = (int *)param_3[0x17]" (identifier "piVar31") (= "=") (cast_expression "(int *)param_3[0x17]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[0x17]" (identifier "param_3") ([ "[") (number_literal "0x17") (] "]")))) (; ";")) (if_statement "if (0 < iVar41) {\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" (if "if") (parenthesized_expression "(0 < iVar41)" (( "(") (binary_expression "0 < iVar41" (number_literal "0") (< "<") (identifier "iVar41")) () ")")) (compound_statement "{\n    do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);\n  }" ({ "{") (do_statement "do {\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    } while (iVar41 != 0);" (do "do") (compound_statement "{\n      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }\n      piVar31 = piVar31 + 0xc;\n      iVar41 = iVar41 + -1;\n    }" ({ "{") (if_statement "if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))))" (( "(") (binary_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&\n         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" (parenthesized_expression "((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0))" (( "(") (binary_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))\n          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)" (parenthesized_expression "(((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))" (( "(") (binary_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0)" (parenthesized_expression "((*(byte *)((int)piVar31 + 10) & 6) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar31 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)piVar31 + 10) & 6)" (( "(") (binary_expression "*(byte *)((int)piVar31 + 10) & 6" (pointer_expression "*(byte *)((int)piVar31 + 10)" (* "*") (cast_expression "(byte *)((int)piVar31 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar31 + 10)" (( "(") (binary_expression "(int)piVar31 + 10" (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "6")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x82) != 0)" (( "(") (binary_expression "(*(ushort *)(piVar31 + 3) & 0x82) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x82)" (( "(") (binary_expression "*(ushort *)(piVar31 + 3) & 0x82" (pointer_expression "*(ushort *)(piVar31 + 3)" (* "*") (cast_expression "(ushort *)(piVar31 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31 + 3)" (( "(") (binary_expression "piVar31 + 3" (identifier "piVar31") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x82")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(ushort *)(piVar31 + 3) & 0x800) != 0)" (( "(") (binary_expression "(*(ushort *)(piVar31 + 3) & 0x800) != 0" (parenthesized_expression "(*(ushort *)(piVar31 + 3) & 0x800)" (( "(") (binary_expression "*(ushort *)(piVar31 + 3) & 0x800" (pointer_expression "*(ushort *)(piVar31 + 3)" (* "*") (cast_expression "(ushort *)(piVar31 + 3)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar31 + 3)" (( "(") (binary_expression "piVar31 + 3" (identifier "piVar31") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x800")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))" (( "(") (parenthesized_expression "(piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0))" (( "(") (binary_expression "piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" (binary_expression "piVar31[5] == iVar9" (subscript_expression "piVar31[5]" (identifier "piVar31") ([ "[") (number_literal "5") (] "]")) (== "==") (identifier "iVar9")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0" (parenthesized_expression "(*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8)" (( "(") (binary_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8" (pointer_expression "*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" (* "*") (cast_expression "(byte *)(uVar18 * 0x44 + iVar8 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar18 * 0x44 + iVar8 + 0x2c)" (( "(") (binary_expression "uVar18 * 0x44 + iVar8 + 0x2c" (binary_expression "uVar18 * 0x44 + iVar8" (binary_expression "uVar18 * 0x44" (identifier "uVar18") (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar8")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        iVar42 = *piVar31;\n        local_70 = 0x83;\n        local_6c = 0;\n        local_7c = 0;\n        local_78 = 0;\n        local_74 = 0x100;\n        local_72 = 1;\n        local_84 = piVar1;\n        local_80 = piVar1;\n        local_68 = iVar9;\n        if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar42 = *piVar31;" (assignment_expression "iVar42 = *piVar31" (identifier "iVar42") (= "=") (pointer_expression "*piVar31" (* "*") (identifier "piVar31"))) (; ";")) (expression_statement "local_70 = 0x83;" (assignment_expression "local_70 = 0x83" (identifier "local_70") (= "=") (number_literal "0x83")) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 0x100;" (assignment_expression "local_74 = 0x100" (identifier "local_74") (= "=") (number_literal "0x100")) (; ";")) (expression_statement "local_72 = 1;" (assignment_expression "local_72 = 1" (identifier "local_72") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_84 = piVar1;" (assignment_expression "local_84 = piVar1" (identifier "local_84") (= "=") (identifier "piVar1")) (; ";")) (expression_statement "local_80 = piVar1;" (assignment_expression "local_80 = piVar1" (identifier "local_80") (= "=") (identifier "piVar1")) (; ";")) (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" (identifier "local_68") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (piVar31[7] != -2) {\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(piVar31[7] != -2)" (( "(") (binary_expression "piVar31[7] != -2" (subscript_expression "piVar31[7]" (identifier "piVar31") ([ "[") (number_literal "7") (] "]")) (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n          local_3c = (undefined2)piVar31[7];\n          puVar23 = (undefined4 *)FUN_00061a10();\n          if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "local_3c = (undefined2)piVar31[7];" (assignment_expression "local_3c = (undefined2)piVar31[7]" (identifier "local_3c") (= "=") (cast_expression "(undefined2)piVar31[7]" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (subscript_expression "piVar31[7]" (identifier "piVar31") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)FUN_00061a10()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00061a10()" (identifier "FUN_00061a10") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar23 != (undefined4 *)0x0) {\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar23 != (undefined4 *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            puVar39 = (undefined4 *)0x0;\n            do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);\n            puVar23 = puVar39;\n            if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }\n          }" ({ "{") (expression_statement "puVar39 = (undefined4 *)0x0;" (assignment_expression "puVar39 = (undefined4 *)0x0" (identifier "puVar39") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            } while (puVar23 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }\n              puVar23 = (undefined4 *)FUN_00061a10();\n            }" ({ "{") (if_statement "if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" (if "if") (parenthesized_expression "((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0)" (( "(") (binary_expression "(param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0" (binary_expression "(param_7 & puVar23[9]) == 0" (parenthesized_expression "(param_7 & puVar23[9])" (( "(") (binary_expression "param_7 & puVar23[9]" (identifier "param_7") (& "&") (subscript_expression "puVar23[9]" (identifier "puVar23") ([ "[") (number_literal "9") (] "]"))) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(param_6 & puVar23[8]) == 0" (parenthesized_expression "(param_6 & puVar23[8])" (( "(") (binary_expression "param_6 & puVar23[8]" (identifier "param_6") (& "&") (subscript_expression "puVar23[8]" (identifier "puVar23") ([ "[") (number_literal "8") (] "]"))) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;\n                if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }\n              }" ({ "{") (if_statement "if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))\n                goto LAB_0009b454;" (if "if") (parenthesized_expression "((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))" (( "(") (binary_expression "(puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0)" (parenthesized_expression "(puVar23[9] == 0 && puVar23[8] == 0)" (( "(") (binary_expression "puVar23[9] == 0 && puVar23[8] == 0" (binary_expression "puVar23[9] == 0" (subscript_expression "puVar23[9]" (identifier "puVar23") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "puVar23[8] == 0" (subscript_expression "puVar23[8]" (identifier "puVar23") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar23 + 3) & 0x82) != 0)" (( "(") (binary_expression "(*(byte *)(puVar23 + 3) & 0x82) != 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 0x82)" (( "(") (binary_expression "*(byte *)(puVar23 + 3) & 0x82" (pointer_expression "*(byte *)(puVar23 + 3)" (* "*") (cast_expression "(byte *)(puVar23 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar23 + 3)" (( "(") (binary_expression "puVar23 + 3" (identifier "puVar23") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "0x82")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0009b454;" (goto "goto") (statement_identifier "LAB_0009b454") (; ";"))) (if_statement "if (puVar39 == (undefined4 *)0x0) {\n                  puVar39 = puVar23;\n                }" (if "if") (parenthesized_expression "(puVar39 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar39 == (undefined4 *)0x0" (identifier "puVar39") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  puVar39 = puVar23;\n                }" ({ "{") (expression_statement "puVar39 = puVar23;" (assignment_expression "puVar39 = puVar23" (identifier "puVar39") (= "=") (identifier "puVar23")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar23 = (undefined4 *)FUN_00061a10();" (assignment_expression "puVar23 = (undefined4 *)FUN_00061a10()" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)FUN_00061a10()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00061a10()" (identifier "FUN_00061a10") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar23 != (undefined4 *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar23 = puVar39;" (assignment_expression "puVar23 = puVar39" (identifier "puVar23") (= "=") (identifier "puVar39")) (; ";")) (if_statement "if (puVar39 != (undefined4 *)0x0) {\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" (if "if") (parenthesized_expression "(puVar39 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar39 != (undefined4 *)0x0" (identifier "puVar39") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }\n            }" ({ "{") (labeled_statement "LAB_0009b454:\n              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" (statement_identifier "LAB_0009b454") (: ":") (if_statement "if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )) {\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" (if "if") (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 ))" (( "(") (binary_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0) &&\n                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 4) == 0)" (( "(") (binary_expression "(*(byte *)((int)puVar23 + 10) & 4) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 4)" (( "(") (binary_expression "*(byte *)((int)puVar23 + 10) & 4" (pointer_expression "*(byte *)((int)puVar23 + 10)" (* "*") (cast_expression "(byte *)((int)puVar23 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 10)" (( "(") (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))\n                 )" (( "(") (parenthesized_expression "((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))" (( "(") (binary_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2)" (parenthesized_expression "(piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0))" (( "(") (comma_expression "piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (assignment_expression "piVar24 = (int *)*puVar23" (identifier "piVar24") (= "=") (cast_expression "(int *)*puVar23" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar23" (* "*") (identifier "puVar23")))) (, ",") (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0 ||\n                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)" (binary_expression "(*(byte *)(puVar23 + 3) & 1) == 0" (parenthesized_expression "(*(byte *)(puVar23 + 3) & 1)" (( "(") (binary_expression "*(byte *)(puVar23 + 3) & 1" (pointer_expression "*(byte *)(puVar23 + 3)" (* "*") (cast_expression "(byte *)(puVar23 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar23 + 3)" (( "(") (binary_expression "puVar23 + 3" (identifier "puVar23") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)((int)piVar24 + 5) & 8) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar24 + 5) & 8) == 0" (parenthesized_expression "(*(byte *)((int)piVar24 + 5) & 8)" (( "(") (binary_expression "*(byte *)((int)piVar24 + 5) & 8" (pointer_expression "*(byte *)((int)piVar24 + 5)" (* "*") (cast_expression "(byte *)((int)piVar24 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + 5)" (( "(") (binary_expression "(int)piVar24 + 5" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(piVar24[5] + 0x1c) < 2)" (( "(") (binary_expression "**(int **)(piVar24[5] + 0x1c) < 2" (pointer_expression "**(int **)(piVar24[5] + 0x1c)" (* "*") (pointer_expression "*(int **)(piVar24[5] + 0x1c)" (* "*") (cast_expression "(int **)(piVar24[5] + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar24[5] + 0x1c)" (( "(") (binary_expression "piVar24[5] + 0x1c" (subscript_expression "piVar24[5]" (identifier "piVar24") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x1c")) () ")"))))) (< "<") (number_literal "2")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                local_b8 = *piVar24;\n                local_b4 = (code *)piVar24[1];\n                local_b0 = (code *)piVar24[2];\n                local_a8 = piVar24[4];\n                local_a4 = piVar24[5];\n                local_a0 = (int *)piVar24[6];\n                local_9c = piVar24[7];\n                local_98 = piVar24[8];\n                local_94 = piVar24[9];\n                local_90 = piVar24[10];\n                local_8c = piVar24[0xb];\n                local_88 = piVar24[0xc];\n                local_ac = *(undefined4 *)(iVar42 + 0xc);\n                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);\n              }" ({ "{") (expression_statement "local_b8 = *piVar24;" (assignment_expression "local_b8 = *piVar24" (identifier "local_b8") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "local_b4 = (code *)piVar24[1];" (assignment_expression "local_b4 = (code *)piVar24[1]" (identifier "local_b4") (= "=") (cast_expression "(code *)piVar24[1]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar24[1]" (identifier "piVar24") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_b0 = (code *)piVar24[2];" (assignment_expression "local_b0 = (code *)piVar24[2]" (identifier "local_b0") (= "=") (cast_expression "(code *)piVar24[2]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar24[2]" (identifier "piVar24") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_a8 = piVar24[4];" (assignment_expression "local_a8 = piVar24[4]" (identifier "local_a8") (= "=") (subscript_expression "piVar24[4]" (identifier "piVar24") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_a4 = piVar24[5];" (assignment_expression "local_a4 = piVar24[5]" (identifier "local_a4") (= "=") (subscript_expression "piVar24[5]" (identifier "piVar24") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_a0 = (int *)piVar24[6];" (assignment_expression "local_a0 = (int *)piVar24[6]" (identifier "local_a0") (= "=") (cast_expression "(int *)piVar24[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar24[6]" (identifier "piVar24") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "local_9c = piVar24[7];" (assignment_expression "local_9c = piVar24[7]" (identifier "local_9c") (= "=") (subscript_expression "piVar24[7]" (identifier "piVar24") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_98 = piVar24[8];" (assignment_expression "local_98 = piVar24[8]" (identifier "local_98") (= "=") (subscript_expression "piVar24[8]" (identifier "piVar24") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_94 = piVar24[9];" (assignment_expression "local_94 = piVar24[9]" (identifier "local_94") (= "=") (subscript_expression "piVar24[9]" (identifier "piVar24") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_90 = piVar24[10];" (assignment_expression "local_90 = piVar24[10]" (identifier "local_90") (= "=") (subscript_expression "piVar24[10]" (identifier "piVar24") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "local_8c = piVar24[0xb];" (assignment_expression "local_8c = piVar24[0xb]" (identifier "local_8c") (= "=") (subscript_expression "piVar24[0xb]" (identifier "piVar24") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "local_88 = piVar24[0xc];" (assignment_expression "local_88 = piVar24[0xc]" (identifier "local_88") (= "=") (subscript_expression "piVar24[0xc]" (identifier "piVar24") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "local_ac = *(undefined4 *)(iVar42 + 0xc);" (assignment_expression "local_ac = *(undefined4 *)(iVar42 + 0xc)" (identifier "local_ac") (= "=") (pointer_expression "*(undefined4 *)(iVar42 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar42 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar42 + 0xc)" (( "(") (binary_expression "iVar42 + 0xc" (identifier "iVar42") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "FUN_00092bc0(param_1,&local_b8,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,&local_b8,iVar40,0x10)" (identifier "FUN_00092bc0") (argument_list "(param_1,&local_b8,iVar40,0x10)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) (, ",") (identifier "iVar40") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (expression_statement "piVar31 = piVar31 + 0xc;" (assignment_expression "piVar31 = piVar31 + 0xc" (identifier "piVar31") (= "=") (binary_expression "piVar31 + 0xc" (identifier "piVar31") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "iVar41 = iVar41 + -1;" (assignment_expression "iVar41 = iVar41 + -1" (identifier "iVar41") (= "=") (binary_expression "iVar41 + -1" (identifier "iVar41") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar41 != 0)" (( "(") (binary_expression "iVar41 != 0" (identifier "iVar41") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0009b538:\n  if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" (statement_identifier "LAB_0009b538") (: ":") (if_statement "if (*param_5 == 0) {\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }\n  else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" (if "if") (parenthesized_expression "(*param_5 == 0)" (( "(") (binary_expression "*param_5 == 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_6 = param_5[0x13];\n    param_7 = param_5[0x14];\n  }" ({ "{") (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" (identifier "param_6") (= "=") (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" (identifier "param_7") (= "=") (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" (else "else") (compound_statement "{\n    param_5[7] = param_2[0x1a];\n    FUN_00049630(*param_5);\n    param_7 = param_5[0x14];\n    iVar41 = param_3[0x15];\n    puVar23 = (undefined4 *)param_3[0x17];\n    param_6 = param_5[0x13];\n    if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }\n  }" ({ "{") (expression_statement "param_5[7] = param_2[0x1a];" (assignment_expression "param_5[7] = param_2[0x1a]" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_2[0x1a]" (identifier "param_2") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_00049630(*param_5);" (call_expression "FUN_00049630(*param_5)" (identifier "FUN_00049630") (argument_list "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")"))) (; ";")) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" (identifier "param_7") (= "=") (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "puVar23 = (undefined4 *)param_3[0x17];" (assignment_expression "puVar23 = (undefined4 *)param_3[0x17]" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)param_3[0x17]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[0x17]" (identifier "param_3") ([ "[") (number_literal "0x17") (] "]")))) (; ";")) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" (identifier "param_6") (= "=") (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (if_statement "if (0 < iVar41) {\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" (if "if") (parenthesized_expression "(0 < iVar41)" (( "(") (binary_expression "0 < iVar41" (number_literal "0") (< "<") (identifier "iVar41")) () ")")) (compound_statement "{\n      iVar42 = 0;\n      do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);\n    }" ({ "{") (expression_statement "iVar42 = 0;" (assignment_expression "iVar42 = 0" (identifier "iVar42") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      } while (iVar42 < iVar41);" (do "do") (compound_statement "{\n        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }\n        iVar42 = iVar42 + 1;\n        puVar23 = puVar23 + 0xc;\n      }" ({ "{") (if_statement "if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" (if "if") (parenthesized_expression "(((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0))" (( "(") (binary_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0) &&\n           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" (parenthesized_expression "((*(byte *)((int)puVar23 + 10) & 6) == 0)" (( "(") (binary_expression "(*(byte *)((int)puVar23 + 10) & 6) == 0" (parenthesized_expression "(*(byte *)((int)puVar23 + 10) & 6)" (( "(") (binary_expression "*(byte *)((int)puVar23 + 10) & 6" (pointer_expression "*(byte *)((int)puVar23 + 10)" (* "*") (cast_expression "(byte *)((int)puVar23 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 10)" (( "(") (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "6")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)" (( "(") (binary_expression "(puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0" (binary_expression "(puVar23[0xb] & param_7) == 0" (parenthesized_expression "(puVar23[0xb] & param_7)" (( "(") (binary_expression "puVar23[0xb] & param_7" (subscript_expression "puVar23[0xb]" (identifier "puVar23") ([ "[") (number_literal "0xb") (] "]")) (& "&") (identifier "param_7")) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(puVar23[10] & param_6) == 0" (parenthesized_expression "(puVar23[10] & param_6)" (( "(") (binary_expression "puVar23[10] & param_6" (subscript_expression "puVar23[10]" (identifier "puVar23") ([ "[") (number_literal "10") (] "]")) (& "&") (identifier "param_6")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);\n          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;\n          iVar41 = param_3[0x15];\n          param_6 = param_5[0x13];\n          param_7 = param_5[0x14];\n        }" ({ "{") (expression_statement "FUN_00092bc0(param_1,*puVar23,iVar40,0x10);" (call_expression "FUN_00092bc0(param_1,*puVar23,iVar40,0x10)" (identifier "FUN_00092bc0") (argument_list "(param_1,*puVar23,iVar40,0x10)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (, ",") (identifier "iVar40") (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;" (assignment_expression "*(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" (* "*") (cast_expression "(ushort *)((int)puVar23 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 10)" (( "(") (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)puVar23 + 10) | 4" (pointer_expression "*(ushort *)((int)puVar23 + 10)" (* "*") (cast_expression "(ushort *)((int)puVar23 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 10)" (( "(") (binary_expression "(int)puVar23 + 10" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "10")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "iVar41 = param_3[0x15];" (assignment_expression "iVar41 = param_3[0x15]" (identifier "iVar41") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "param_6 = param_5[0x13];" (assignment_expression "param_6 = param_5[0x13]" (identifier "param_6") (= "=") (subscript_expression "param_5[0x13]" (identifier "param_5") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "param_7 = param_5[0x14];" (assignment_expression "param_7 = param_5[0x14]" (identifier "param_7") (= "=") (subscript_expression "param_5[0x14]" (identifier "param_5") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar42 = iVar42 + 1;" (assignment_expression "iVar42 = iVar42 + 1" (identifier "iVar42") (= "=") (binary_expression "iVar42 + 1" (identifier "iVar42") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar23 = puVar23 + 0xc;" (assignment_expression "puVar23 = puVar23 + 0xc" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 0xc" (identifier "puVar23") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar42 < iVar41)" (( "(") (binary_expression "iVar42 < iVar41" (identifier "iVar42") (< "<") (identifier "iVar41")) () ")")) (; ";")) (} "}"))) (} "}"))))) (labeled_statement "LAB_0009b549:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }" (statement_identifier "LAB_0009b549") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\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_000d1450();\n  }" ({ "{") (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" (identifier "FUN_000d1450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return CONCAT44(param_7,param_6);" (return "return") (call_expression "CONCAT44(param_7,param_6)" (identifier "CONCAT44") (argument_list "(param_7,param_6)" (( "(") (identifier "param_7") (, ",") (identifier "param_6") () ")"))) (; ";")) (labeled_statement "LAB_0009c960:\n  iVar20 = *(int *)(iVar20 + 0x14);" (statement_identifier "LAB_0009c960") (: ":") (expression_statement "iVar20 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar20 = *(int *)(iVar20 + 0x14)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (if_statement "if (iVar20 == 0) goto LAB_0009ca50;" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009ca50;" (goto "goto") (statement_identifier "LAB_0009ca50") (; ";"))) (goto_statement "goto LAB_0009c96b;" (goto "goto") (statement_identifier "LAB_0009c96b") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

type_1 __regparm3
function_1
          (type_2 *pParse,type_3 *v,type_4 *pWInfo,int var_8,type_5 *pLevel,type_1 notReady)

{
  type_6 *pWC;
  type_7 *puVar1;
  short *psVar2;
  type_8 var_11;
  char var_79;
  type_9 var_62;
  type_9 var_63;
  type_10 *var_26;
  int var_105;
  type_11 *pSVar7;
  type_12 *var_2;
  type_13 *pWVar8;
  type_14 *var_94;
  type_15 *pTVar10;
  type_16 *pCVar11;
  type_17 *pLVar12;
  type_11 *pSVar13;
  type_18 *piVar14;
  bool bVar15;
  type_19 *pcVar16;
  type_9 var_81;
  bool bVar18;
  type_1 BVar19;
  type_20 *p_Var20;
  char var_78;
  type_21 var_17;
  type_8 var_80;
  short var_90;
  type_22 var_30;
  int var_9;
  char *var_75;
  int var_12;
  type_12 *var_73;
  type_23 *var_23;
  int var_56;
  type_12 *var_39;
  type_4 *var_47;
  type_2 *pPVar32;
  type_24 *var_66;
  type_23 **ppWVar34;
  type_12 *var_101;
  type_11 *pSVar36;
  type_2 *pPVar37;
  type_12 *var_72;
  type_11 *var_28;
  int *var_89;
  type_9 var_46;
  type_22 var_5;
  type_12 *var_13;
  type_25 *var_68;
  int extraout_ECX;
  int extraout_ECX_00;
  type_22 extraout_ECX_01;
  type_22 extraout_ECX_02;
  type_22 extraout_ECX_03;
  type_5 *var_10;
  int var_24;
  type_21 *var_33;
  type_22 var_60;
  type_25 *p2;
  type_25 *var_67;
  type_23 *var_15;
  int var_38;
  type_22 var_3;
  type_26 *var_35;
  type_3 *pVVar52;
  int p2_00;
  type_22 var_4;
  type_23 *var_14;
  type_27 *pSVar55;
  type_28 *var_31;
  type_25 *var_69;
  int var_25;
  type_28 *var_32;
  int var_1;
  bool bVar60;
  type_12 *var_98;
  type_12 *in_stack_fffffe64;
  int in_stack_fffffe68;
  type_29 *pWVar61;
  type_30 *var_34;
  type_29 *pWVar63;
  int var_99;
  type_22 var_103;
  type_12 *var_74;
  type_26 *local_158;
  type_22 var_70;
  type_22 var_87;
  char *var_86;
  type_12 *local_140;
  type_26 *var_53;
  int var_36;
  type_12 *var_44;
  type_23 *var_83;
  type_12 *var_82;
  type_23 *var_61;
  type_22 var_59;
  type_31 w;
  type_32 x_1;
  int var_21;
  type_20 *local_b4;
  type_33 local_b0;
  type_12 *local_ac;
  type_12 *local_a8;
  type_34 local_a4;
  type_35 local_a0;
  int local_9c;
  type_28 local_98;
  type_28 local_94;
  type_36 *local_90;
  type_37 local_8c;
  type_38 scan;
  type_21 aMoveOp [4];
  type_39 x;
  
  var_80 = 0;
  var_26 = pParse->var_26;
  pWVar63 = pLevel->pWLoop;
  var_30 = (type_22)pLevel->iFrom;
  var_105 = *(int *)(var_1 + 0x14);
  pWC = &pWInfo->sWC;
  pSVar7 = pWInfo->var_28;
  var_2 = (type_12 *)pSVar7->a[var_30].iCursor;
  var_4 = (pWInfo->sMaskSet).n;
  BVar19 = notReady;
  if (0 < (int)var_4) {
    if ((type_12 *)(pWInfo->sMaskSet).ix[0] == var_2) {
      var_3 = 0xfffffffe;
      var_4 = 0xffffffff;
    }
    else {
      var_3 = 0;
      do {
        var_5 = var_3 + 1;
        if (var_4 == var_5) goto LAB_0009a9fc;
        var_25 = var_3 + 1;
        var_3 = var_5;
      } while (var_2 != (type_12 *)(pWInfo->sMaskSet).ix[var_25]);
      bVar60 = (var_5 & 0x20) == 0;
      var_3 = ~((type_22)bVar60 << ((type_8)var_5 & 0x1f));
      var_4 = ~((type_22)!bVar60 << ((type_8)var_5 & 0x1f));
    }
    BVar19 = var_6(var_4 & notReady._4_4_,var_3 & (type_22)notReady);
  }
LAB_0009a9fc:
  pLevel->notReady = BVar19;
  var_4 = *(type_22 *)((int)&pWInfo->revMask + 4);
  BVar19 = pWInfo->revMask;
  var_25 = pParse->nLabel + -1;
  pParse->nLabel = var_25;
  pLevel->addrNxt = var_25;
  pLevel->addrBrk = var_25;
  p2_00 = pParse->nLabel + -1;
  pParse->nLabel = p2_00;
  pLevel->addrCont = p2_00;
  if ((pLevel->iFrom != '\0') && ((pSVar7->a[var_30].fg.jointype & 8) != 0)) {
    var_9 = pParse->nMem + 1;
    pParse->nMem = var_9;
    pLevel->iLeftJoin = var_9;
    var_7(v,0x45,0,var_9,(int)var_98);
  }
  if (var_8 == 0) {
    var_9 = 0;
  }
  else {
    var_9 = var_8;
    if (pWInfo->a[var_8].iLeftJoin == 0) {
      var_10 = pWInfo->a + var_8 + -1;
      do {
        var_9 = var_9 + -1;
        if (var_9 == 0) break;
        var_89 = &var_10->iLeftJoin;
        var_10 = var_10 + -1;
      } while (*var_89 == 0);
    }
  }
  var_11 = pSVar7->a[var_30].fg.field_0x1;
  if ((var_11 & 0x10) == 0) {
    var_3 = (type_22)BVar19 >> ((type_8)var_8 & 0x1f) | var_4 << 0x20 - ((type_8)var_8 & 0x1f);
    if ((var_8 & 0x20U) != 0) {
      var_3 = var_4 >> ((type_8)var_8 & 0x1f);
    }
    var_13 = (type_12 *)(var_3 & 1);
    var_4 = pWVar63->wsFlags;
    if ((var_4 & 0x400) == 0) {
      if (((var_4 & 0x100) == 0) || ((var_4 & 5) == 0)) {
        var_9 = pWInfo->a[var_9].addrBrk;
        if ((var_4 & 0x102) == 0x102) {
          if ((var_4 & 0x20) == 0) {
            if ((var_4 & 0x10) != 0) {
              var_12 = 0;
              var_14 = (type_23 *)0x0;
              ppWVar34 = pWVar63->aLTerm;
LAB_0009c28b:
              var_15 = *(type_23 **)((int)ppWVar34 + var_12);
              if (var_13 == (type_12 *)0x0) {
                var_23 = var_15;
                if (var_14 == (type_23 *)0x0) {
                  var_12 = 0x25;
                  goto LAB_0009c549;
                }
              }
              else {
                var_23 = var_14;
                var_14 = var_15;
                if (var_15 == (type_23 *)0x0) goto LAB_0009c544;
              }
LAB_0009c2a8:
              var_39 = var_14->pExpr;
              var_16(aMoveOp,"\x19\x17\x16\x18",4);
              var_72 = var_39->pRight;
              var_17 = var_72->op;
              if (var_17 == 0xad) {
                var_17 = var_72->op2;
              }
              if (var_17 == 0xae) {
                var_9 = ((var_72->x).pList)->nExpr;
LAB_0009cf97:
                if (var_9 < 2) goto LAB_0009c2d7;
                if (pParse->nTempReg == '\0') {
                  var_101 = (type_12 *)(pParse->nMem + 1);
                  pParse->nMem = (int)var_101;
                }
                else {
                  var_80 = pParse->nTempReg - 1;
                  pParse->nTempReg = var_80;
                  var_101 = (type_12 *)pParse->aTempReg[var_80];
                }
                var_21 = (int)var_101;
                var_18(pParse,var_72,(int)var_101,1);
                var_80 = aMoveOp[var_39->op - 0x37 & 2 | 1];
              }
              else {
                if (var_17 == 0x88) {
                  var_9 = ((var_72->x).pSelect)->pEList->nExpr;
                  goto LAB_0009cf97;
                }
LAB_0009c2d7:
                var_101 = (type_12 *)var_19(pParse,var_72,&var_21);
                var_20(pLevel,var_14);
                var_80 = *(type_8 *)((int)scan.aiCur + var_39->op + 0xe);
              }
              var_7(v,(type_22)var_80,(int)var_2,var_25,(int)var_101);
              if (var_21 != 0) {
                var_22(pParse,var_21);
              }
              goto LAB_0009c32f;
            }
            if (var_13 != (type_12 *)0x0) {
              var_15 = (type_23 *)0x0;
              var_12 = 0x21;
              goto LAB_0009c549;
            }
LAB_0009bc9a:
            var_7(v,0x25,(int)var_2,var_9,(int)var_98);
            var_25 = v->nOp;
            var_101 = var_98;
LAB_0009bcbb:
            pLevel->op = '\x05';
          }
          else {
            ppWVar34 = pWVar63->aLTerm;
            var_14 = *ppWVar34;
            if ((var_4 & 0x10) != 0) {
              var_12 = 4;
              goto LAB_0009c28b;
            }
            var_23 = var_14;
            if (var_13 == (type_12 *)0x0) {
              if (var_14 == (type_23 *)0x0) goto LAB_0009bc9a;
              var_23 = (type_23 *)0x0;
              goto LAB_0009c2a8;
            }
LAB_0009c544:
            var_15 = var_23;
            var_12 = 0x21;
LAB_0009c549:
            var_7(v,var_12,(int)var_2,var_9,(int)var_98);
            var_23 = var_15;
            var_101 = var_98;
LAB_0009c32f:
            if (var_23 != (type_23 *)0x0) {
              var_39 = var_23->pExpr;
              var_72 = var_39->pRight;
              var_9 = pParse->nMem + 1;
              pParse->nMem = var_9;
              var_18(pParse,var_72,var_9,1);
              var_72 = var_39->pRight;
              var_17 = var_72->op;
              if (var_17 == 0xad) {
                var_17 = var_72->op2;
              }
              if (var_17 == 0xae) {
                var_12 = ((var_72->x).pList)->nExpr;
LAB_0009ca64:
                if (var_12 < 2) goto LAB_0009c37b;
LAB_0009ca6d:
                var_12 = (-(type_22)(var_13 == (type_12 *)0x0) & 0xfffffffe) + 0x38;
              }
              else {
                if (var_17 == 0x88) {
                  var_12 = ((var_72->x).pSelect)->pEList->nExpr;
                  goto LAB_0009ca64;
                }
LAB_0009c37b:
                if ((var_39->op - 0x36 & 0xfd) != 0) goto LAB_0009ca6d;
                var_12 = (-(type_22)(var_13 == (type_12 *)0x0) & 2) + 0x37;
              }
              if (var_17 == 0xae) {
                var_24 = ((var_72->x).pList)->nExpr;
LAB_0009d05c:
                if (var_24 < 2) goto LAB_0009c3ac;
              }
              else {
                if (var_17 == 0x88) {
                  var_24 = ((var_72->x).pSelect)->pEList->nExpr;
                  goto LAB_0009d05c;
                }
LAB_0009c3ac:
                var_20(pLevel,var_23);
              }
              var_24 = v->nOp;
              if (var_13 == (type_12 *)0x0) {
                pLevel->op = '\x05';
                pLevel->p2 = var_24;
                pLevel->var_2 = (int)var_2;
              }
              else {
                pLevel->op = '\x04';
                pLevel->p2 = var_24;
                pLevel->var_2 = (int)var_2;
              }
              var_98 = (type_12 *)(pParse->nMem + 1);
              pParse->nMem = (int)var_98;
              var_7(v,0x7f,(int)var_2,(int)var_98,(int)var_101);
              var_7(v,var_12,var_9,var_25,(int)var_98);
              if (0 < v->nOp) {
                local_158 = (type_26 *)0x0;
                var_4 = 2;
                v->aOp[v->nOp + -1].p5 = 0x53;
                goto LAB_0009b200;
              }
              goto LAB_0009b1e0;
            }
            var_25 = v->nOp;
            if (var_13 == (type_12 *)0x0) goto LAB_0009bcbb;
            pLevel->op = '\x04';
          }
          pLevel->p2 = var_25;
          local_158 = (type_26 *)0x0;
          var_4 = 2;
          pLevel->var_2 = (int)var_2;
          var_98 = var_101;
          goto LAB_0009b200;
        }
        if ((var_4 & 0x200) == 0) {
          if ((var_4 & 0x2000) == 0) {
            if ((var_11 & 0x20) == 0) {
              var_25 = var_13[0x429a].iTable;
              var_80 = *(type_8 *)((int)&var_13[0x429a].nHeight + 2);
              pLevel->var_2 = (int)var_2;
              pLevel->op = (type_21)var_25;
              var_25 = var_7(v,(type_22)var_80,(int)var_2,var_9,(int)var_98);
              pLevel->p5 = '\x01';
              pLevel->p2 = var_25 + 1;
              goto LAB_0009b1e0;
            }
            pLevel->op = 0xad;
            local_158 = (type_26 *)0x0;
            var_4 = 2;
            goto LAB_0009b200;
          }
          var_94 = (type_14 *)pParse->nTab;
          pParse->nTab = (int)((int)&var_94->nExpr + 1);
          var_25 = pParse->nMem + 1;
          var_9 = pParse->nLabel + -1;
          pParse->nMem = var_25;
          pParse->nLabel = var_9;
          pTVar10 = pSVar7->a[var_30].pTab;
          var_14 = *pWVar63->aLTerm;
          pWVar8 = (var_14->u).pOrInfo;
          pLevel->op = 'A';
          pLevel->var_2 = var_25;
          if (pWInfo->nLevel < 2) {
            var_28 = pWInfo->var_28;
          }
          else {
            var_4 = (type_22)pWInfo->nLevel - var_8;
            var_12 = (var_4 - 1) * 0x44;
            var_3 = var_12 + 0x4c;
            if (var_26 == (type_10 *)0x0) {
              if ((var_3 == 0) || (0x7ffffefe < var_12 + 0x4bU)) goto LAB_0009b549;
              if (sqlite3Config.bMemstat == 0) {
                var_28 = (type_11 *)(*sqlite3Config.m.xMalloc)(var_3);
              }
              else {
                var_28 = (type_11 *)var_27(var_6(in_stack_fffffe68,in_stack_fffffe64));
              }
LAB_0009d302:
              if (var_28 == (type_11 *)0x0) goto LAB_0009b549;
            }
            else {
              if ((var_26->lookaside).sz < var_3) {
                if ((var_26->lookaside).bDisable == 0) {
                  puVar1 = (var_26->lookaside).anStat + 1;
                  *puVar1 = *puVar1 + 1;
                }
                else if (var_26->mallocFailed != '\0') goto LAB_0009b549;
LAB_0009d2f9:
                var_28 = (type_11 *)
                           var_29(var_26,var_6(in_stack_fffffe68,in_stack_fffffe64));
                goto LAB_0009d302;
              }
              if (var_3 < 0x81) {
                var_28 = (type_11 *)(var_26->lookaside).pSmallFree;
                if (var_28 == (type_11 *)0x0) {
                  var_28 = (type_11 *)(var_26->lookaside).pSmallInit;
                  if (var_28 == (type_11 *)0x0) goto LAB_0009d46c;
                  pLVar12 = (type_17 *)var_28->nSrc;
                  puVar1 = (var_26->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (var_26->lookaside).pSmallInit = pLVar12;
                }
                else {
                  pLVar12 = (type_17 *)var_28->nSrc;
                  puVar1 = (var_26->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (var_26->lookaside).pSmallFree = pLVar12;
                }
              }
              else {
LAB_0009d46c:
                var_28 = (type_11 *)(var_26->lookaside).pFree;
                if (var_28 == (type_11 *)0x0) {
                  var_28 = (type_11 *)(var_26->lookaside).pInit;
                  if (var_28 == (type_11 *)0x0) {
                    puVar1 = (var_26->lookaside).anStat + 2;
                    *puVar1 = *puVar1 + 1;
                    goto LAB_0009d2f9;
                  }
                  pLVar12 = (type_17 *)var_28->nSrc;
                  puVar1 = (var_26->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (var_26->lookaside).pInit = pLVar12;
                }
                else {
                  pLVar12 = (type_17 *)var_28->nSrc;
                  puVar1 = (var_26->lookaside).anStat;
                  *puVar1 = *puVar1 + 1;
                  (var_26->lookaside).pFree = pLVar12;
                }
              }
            }
            var_28->nAlloc = (type_7)(var_4 & 0xff);
            var_28->nSrc = (int)(var_4 & 0xff);
            pSVar55 = pSVar7->a + var_30;
            var_28->a[0].pSchema = pSVar55->pSchema;
            var_28->a[0].pIBIndex = pSVar55->pIBIndex;
            var_32 = (type_28 *)((type_22)&var_28->a[0].zDatabase & 0xfffffffc);
            var_12 = (int)var_28 + (8 - (int)var_32);
            var_31 = (type_28 *)((int)pSVar55 - var_12);
            for (var_3 = var_12 + 0x44U >> 2; var_3 != 0; var_3 = var_3 - 1) {
              *var_32 = *var_31;
              var_31 = var_31 + (type_22)var_80 * -2 + 1;
              var_32 = var_32 + (type_22)var_80 * -2 + 1;
            }
            pSVar13 = pWInfo->var_28;
            if (0 < (int)(var_4 - 1)) {
              var_33 = &pLevel[1].iFrom;
              pSVar36 = var_28 + 1;
              do {
                var_11 = *var_33;
                var_33 = var_33 + 0x54;
                var_32 = (type_28 *)((type_22)&pSVar36->nAlloc & 0xfffffffc);
                pSVar55 = pSVar13->a + var_11;
                pSVar36->nSrc = (int)pSVar55->pSchema;
                *(type_26 **)((int)&pSVar36->a[0].colUsed + 4) = pSVar55->pIBIndex;
                var_34 = &pSVar36->a[0].u1;
                var_12 = (int)pSVar36 - (int)var_32;
                var_31 = (type_28 *)((int)pSVar55 - var_12);
                for (var_3 = var_12 + 0x44U >> 2; var_3 != 0; var_3 = var_3 - 1) {
                  *var_32 = *var_31;
                  var_31 = var_31 + (type_22)var_80 * -2 + 1;
                  var_32 = var_32 + (type_22)var_80 * -2 + 1;
                }
                pSVar36 = (type_11 *)var_34;
              } while ((type_30 *)((int)var_28 + var_4 * 0x44 + 8) !=
                       var_34);
            }
          }
          if ((pWInfo->wctrlFlags & 0x10) == 0) {
            if ((pTVar10->tabFlags & 0x80) != 0) {
              for (var_35 = pTVar10->pIndex; var_35 != (type_26 *)0x0; var_35 = var_35->pNext) {
                if ((var_35->field_0x37 & 3) == 2) {
                  var_36 = pParse->nTab;
                  pParse->nTab = var_36 + 1;
                  var_7(v,100,var_36,(type_22)var_35->nKeyCol,(int)var_98);
                  var_37(pParse,var_35);
                  goto LAB_0009b879;
                }
              }
              pParse->nTab = pParse->nTab + 1;
              goto LAB_0009ca50;
            }
            var_36 = pParse->nMem + 1;
            pParse->nMem = var_36;
            var_7(v,0x48,0,var_36,(int)var_98);
LAB_0009b879:
            local_140 = (type_12 *)(pParse->nMem + 1);
            pParse->nMem = (int)local_140;
          }
          else {
            local_140 = (type_12 *)0x0;
            var_36 = 0;
          }
          var_38 = 0;
          var_13 = (type_12 *)0x0;
          var_56 = var_7(v,0x45,0,var_25,(int)var_98);
          var_12 = (pWInfo->sWC).nTerm;
          var_24 = extraout_ECX;
          if (var_12 < 2) {
LAB_0009d0ac:
            var_44 = (type_12 *)0x0;
          }
          else {
            do {
              var_23 = (pWInfo->sWC).a + var_38;
              if (((var_23 != var_14) && ((var_23->wtFlags & 6) == 0)) &&
                 ((var_23->eOperator & 0x1fff) != 0)) {
                var_39 = var_23->pExpr;
                if (var_39 != (type_12 *)0x0) {
                  var_39 = var_40(var_26,var_39,var_24,(type_21 **)in_stack_fffffe64);
                }
                var_13 = var_41(pParse,var_13,var_39);
                var_12 = (pWInfo->sWC).nTerm;
                var_24 = extraout_ECX_00;
              }
              var_38 = var_38 + 1;
            } while (var_38 < var_12);
            if (var_13 == (type_12 *)0x0) goto LAB_0009d0ac;
            var_44 = var_42(pParse,0x1002c,var_13,in_stack_fffffe64);
          }
          var_46 = pWInfo->wctrlFlags;
          var_98 = (type_12 *)&DAT_00000001;
          var_43(pParse,'\x01',"MULTI-INDEX OR");
          var_12 = (pWVar8->wc).nTerm;
          if (var_12 < 1) {
            var_25 = pParse->addrExplain;
            if (var_25 != 0) {
              pVVar52 = pParse->pVdbe;
              var_53 = (type_26 *)0x0;
              bVar60 = false;
              goto LAB_0009cb9d;
            }
            (pLevel->u).in.nIn = 0;
            bVar60 = false;
          }
          else {
            bVar60 = false;
            var_53 = (type_26 *)0x0;
            var_24 = 0;
            do {
              var_23 = (pWVar8->wc).a + var_24;
              var_38 = var_24 + 1;
              if (((type_12 *)var_23->leftCursor == var_2) || ((var_23->eOperator & 0x400) != 0)) {
                if (var_44 != (type_12 *)0x0) {
                  var_44->pLeft = var_23->pExpr;
                }
                var_98 = (type_12 *)&DAT_00000001;
                pPVar32 = pParse;
                var_43(pParse,'\x01',"INDEX %d",var_38);
                var_47 = var_45(pParse,(type_11 *)0x0,(type_12 *)0x0,
                                              (type_14 *)(int)(short)(var_46 & 0x400 | 0x20),var_94
                                              ,(type_40)pPVar32,(int)var_98);
                if (var_47 != (type_4 *)0x0) {
                  pPVar32 = pParse->pToplevel;
                  if (pParse->pToplevel == (type_2 *)0x0) {
                    pPVar32 = pParse;
                  }
                  if (pPVar32->explain == '\x02') {
                    var_48(pParse,var_28,var_47->a,0);
                  }
                  if ((pWInfo->wctrlFlags & 0x10) == 0) {
                    if ((pWVar8->wc).nTerm + -1 == var_24) {
                      var_24 = -1;
                    }
                    if ((pTVar10->tabFlags & 0x80) == 0) {
                      var_49(v,pTVar10,(int)var_2,-1,(int)local_140);
                      var_98 = local_140;
                      var_12 = var_7(v,0x2d,var_36,0,(int)local_140);
                      if (v->var_26->mallocFailed == '\0') {
                        var_66 = v->aOp;
                        var_66[var_12].p4type = -3;
                        var_66[var_12].p4.i = var_24;
                      }
                    }
                    else {
                      var_35 = pTVar10->pIndex;
                      while( true ) {
                        if (var_35 == (type_26 *)0x0) goto LAB_0009ca50;
                        if ((var_35->field_0x37 & 3) == 2) break;
                        var_35 = var_35->pNext;
                      }
                      var_4 = (type_22)var_35->nKeyCol;
                      var_13 = (type_12 *)var_50(pParse,var_4);
                      if (var_4 != 0) {
                        var_12 = 0;
                        var_39 = var_13;
                        do {
                          psVar2 = (short *)((int)var_35->aiColumn + var_12);
                          var_12 = var_12 + 2;
                          var_49
                                    (v,pTVar10,(int)var_2,(int)*psVar2,(int)var_39);
                          var_39 = (type_12 *)&var_39->affExpr;
                        } while (var_4 * 2 != var_12);
                      }
                      var_98 = var_13;
                      if (var_24 == 0) {
                        var_7(v,0x5b,(int)var_13,var_4,(int)local_140);
                        var_12 = 0;
                        var_51(v,0x82,var_36,(int)local_140,(int)var_13,var_4);
                        var_3 = extraout_ECX_01;
                      }
                      else {
                        var_12 = var_7(v,0x1e,var_36,0,(int)var_13);
                        var_3 = extraout_ECX_02;
                        if (v->var_26->mallocFailed == '\0') {
                          var_66 = v->aOp;
                          var_66[var_12].p4type = -3;
                          var_66[var_12].p4.i = var_4;
                          var_3 = var_4;
                        }
                        if (-1 < var_24) {
                          var_7(v,0x5b,(int)var_13,var_4,(int)local_140);
                          var_98 = var_13;
                          var_51(v,0x82,var_36,(int)local_140,(int)var_13,var_4);
                          var_3 = extraout_ECX_03;
                          if (0 < v->nOp) {
                            v->aOp[v->nOp + -1].p5 = 0x10;
                          }
                        }
                      }
                      if (var_4 == 1) {
                        var_52(pParse,(int)var_13,var_3);
                      }
                      else if (pParse->nRangeReg < (int)var_4) {
                        pParse->nRangeReg = var_4;
                        pParse->iRangeReg = (int)var_13;
                      }
                    }
                    var_7(v,0xc,var_25,var_9,(int)var_98);
                    if (var_12 != 0) {
                      if (var_12 < 0) {
                        var_12 = v->nOp + -1;
                      }
                      var_66 = (type_24 *)&dummy_22674;
                      if (v->var_26->mallocFailed == '\0') {
                        var_66 = v->aOp + var_12;
                      }
                      var_66->p2 = v->nOp;
                    }
                  }
                  else {
                    var_7(v,0xc,var_25,var_9,(int)var_98);
                  }
                  bVar18 = true;
                  if ((var_47->field_0x30 & 2) == 0) {
                    bVar18 = bVar60;
                  }
                  bVar60 = bVar18;
                  pWVar63 = var_47->a[0].pWLoop;
                  if (((pWVar63->wsFlags & 0x200) == 0) ||
                     ((var_35 = (pWVar63->u).btree.pIndex, var_38 != 1 && (var_53 != var_35))))
                  {
                    var_53 = (type_26 *)0x0;
                  }
                  else {
                    var_53 = var_35;
                    if (((pTVar10->tabFlags & 0x80) != 0) &&
                       (var_53 = (type_26 *)0x0, (var_35->field_0x37 & 3) != 2)) {
                      var_53 = var_35;
                    }
                  }
                  var_54(var_47);
                  var_12 = pParse->addrExplain;
                  if (var_12 != 0) {
                    pVVar52 = pParse->pVdbe;
                    if (var_12 < 0) {
                      var_12 = pVVar52->nOp + -1;
                    }
                    var_66 = (type_24 *)&dummy_22674;
                    if (pVVar52->var_26->mallocFailed == '\0') {
                      var_66 = pVVar52->aOp + var_12;
                    }
                    var_12 = var_66->p2;
                  }
                  pParse->addrExplain = var_12;
                }
                var_12 = (pWVar8->wc).nTerm;
              }
              var_24 = var_38;
            } while (var_38 < var_12);
            var_25 = pParse->addrExplain;
            if (var_25 != 0) {
              pVVar52 = pParse->pVdbe;
LAB_0009cb9d:
              if (var_25 < 0) {
                var_25 = pVVar52->nOp + -1;
              }
              var_66 = (type_24 *)&dummy_22674;
              if (pVVar52->var_26->mallocFailed == '\0') {
                var_66 = pVVar52->aOp + var_25;
              }
              var_25 = var_66->p2;
            }
            pParse->addrExplain = var_25;
            (pLevel->u).in.nIn = (int)var_53;
            if (var_53 != (type_26 *)0x0) {
              pLevel->iIdxCur = (int)var_94;
            }
          }
          if (var_44 != (type_12 *)0x0) {
            var_44->pLeft = (type_12 *)0x0;
            var_55(var_26,var_44);
          }
          var_25 = v->nOp + -1;
          if (-1 < var_56) {
            var_25 = var_56;
          }
          var_66 = (type_24 *)&dummy_22674;
          if (v->var_26->mallocFailed == '\0') {
            var_66 = v->aOp + var_25;
          }
          var_66->var_2 = v->nOp;
          var_7(v,0xb,0,pLevel->addrBrk,(int)var_98);
          var_57(v,var_9);
          if ((1 < pWInfo->nLevel) && (var_28 != (type_11 *)0x0)) {
            var_58(var_26,var_28);
          }
          if (!bVar60) {
            var_20(pLevel,var_14);
            local_158 = (type_26 *)0x0;
            var_4 = 2;
            goto LAB_0009b200;
          }
          goto LAB_0009b1e0;
        }
        var_46 = (pWVar63->u).btree.nTop;
        var_62 = (pWVar63->u).btree.nEq;
        var_59 = (type_22)var_62;
        var_63 = (pWVar63->u).btree.nBtm;
        local_158 = (pWVar63->u).btree.pIndex;
        var_39 = (type_12 *)pLevel->iIdxCur;
        if ((var_4 & 0x20) == 0) {
          var_60 = 0;
          var_61 = (type_23 *)0x0;
          var_5 = var_59;
        }
        else {
          var_60 = (type_22)var_63;
          var_61 = pWVar63->aLTerm[var_59];
          var_5 = var_59 + 1;
        }
        var_72 = (type_12 *)pParse->nMem;
        var_74 = (type_12 *)&var_72->affExpr;
        if ((var_4 & 0x10) == 0) {
          bVar60 = false;
          var_83 = (type_23 *)0x0;
        }
        else {
          var_83 = pWVar63->aLTerm[var_5];
          if (var_60 < var_46) {
            var_60 = (type_22)var_46;
          }
          if ((var_83->wtFlags & 0x100) != 0) {
            pParse->nMem = (int)var_74;
            pLevel->iLikeRepCntr = (type_7)var_74;
            var_7(v,0x45,1,(int)var_74,(int)var_98);
            pLevel->addrLikeRep = v->nOp;
            var_4 = pLevel->iLikeRepCntr * 2;
            pLevel->iLikeRepCntr = var_4;
            pLevel->iLikeRepCntr =
                 (type_22)(local_158->aSortOrder[var_59] == '\x01') ^ (type_22)var_13 | var_4;
            var_4 = pWVar63->wsFlags;
            var_72 = (type_12 *)pParse->nMem;
            var_74 = (type_12 *)&var_72->affExpr;
          }
          bVar60 = false;
          if (var_61 == (type_23 *)0x0) {
            var_25 = (int)local_158->aiColumn[var_59];
            if (var_25 < 0) {
              bVar60 = var_25 == -2;
            }
            else {
              bVar60 = local_158->pTable->aCol[var_25].notNull == '\0';
            }
          }
        }
        var_82 = (type_12 *)0x0;
        if ((var_4 & 0x80030) == 0x80000) {
          var_25 = pLevel->iLeftJoin;
          pParse->nMem = (int)var_74;
          pLevel->regBignull = (int)var_74;
          var_72 = var_74;
          if (var_25 != 0) {
            var_7(v,0x45,0,(int)var_74,(int)var_98);
            var_72 = (type_12 *)pParse->nMem;
          }
          bVar60 = true;
          var_60 = 1;
          var_25 = pParse->nLabel + -1;
          pParse->nLabel = var_25;
          var_82 = var_74;
          pLevel->addrBignull = var_25;
          var_74 = (type_12 *)&var_72->affExpr;
        }
        if (var_62 < local_158->nKeyCol) {
          if ((type_12 *)(type_22)(local_158->aSortOrder[var_59] == '\0') == var_13)
          goto LAB_0009c48d;
LAB_0009ac34:
          var_81 = var_46;
          bVar60 = false;
          bVar18 = bVar60;
        }
        else {
          if ((local_158->nKeyCol != var_62) || ((var_3 & 1) == 0)) goto LAB_0009ac34;
LAB_0009c48d:
          var_14 = var_83;
          bVar18 = false;
          var_83 = var_61;
          var_81 = var_63 & 0xff;
          var_61 = var_14;
          var_63 = var_46;
        }
        pVVar52 = pParse->pVdbe;
        pWVar61 = pLevel->pWLoop;
        var_46 = pWVar61->nSkip;
        var_68 = (type_25 *)(type_22)var_46;
        var_35 = (pWVar61->u).btree.pIndex;
        var_69 = (type_25 *)(type_22)(pWVar61->u).btree.nEq;
        var_25 = (int)var_69->argv + (var_60 - 0x1c);
        pParse->nMem = (int)((int)var_72 + var_25);
        var_75 = var_64(pParse->var_26,var_35);
        var_75 = var_65(pParse->var_26,var_75);
        if (var_46 != 0) {
          var_9 = pLevel->iIdxCur;
          if (var_13 == (type_12 *)0x0) {
            var_7(pVVar52,0x25,var_9,0,(int)var_98);
            var_12 = var_7(pVVar52,0xb,0,0,(int)var_98);
            var_24 = 0x19;
          }
          else {
            var_7(pVVar52,0x21,var_9,0,(int)var_98);
            var_12 = var_7(pVVar52,0xb,0,0,(int)var_98);
            var_24 = 0x16;
          }
          var_24 = var_7(pVVar52,var_24,var_9,0,(int)var_74);
          if (pVVar52->var_26->mallocFailed == '\0') {
            var_66 = pVVar52->aOp;
            var_66[var_24].p4type = -3;
            var_66[var_24].p4.pCtx = var_68;
            pLevel->addrSkip = var_24;
            var_24 = pVVar52->nOp;
            if (var_12 < 0) {
              var_66 = pVVar52->aOp;
              var_12 = var_24 + -1;
            }
            var_66 = var_66 + var_12;
          }
          else {
            pLevel->addrSkip = var_24;
            var_66 = (type_24 *)&dummy_22674;
            var_24 = pVVar52->nOp;
          }
          var_66->p2 = var_24;
          p2 = (type_25 *)0x0;
          do {
            var_98 = (type_12 *)((int)p2->argv + (int)&var_74[-1].nHeight);
            var_67 = (type_25 *)((int)&p2->pOut + 1);
            var_7(pVVar52,0x59,var_9,(int)p2,(int)var_98);
            p2 = var_67;
          } while (var_67 != var_68);
        }
        if (var_68 < var_69) {
          var_70 = (int)var_68 * 4;
          do {
            var_14 = *(type_23 **)((int)pWVar61->aLTerm + var_70);
            var_72 = (type_12 *)((int)var_68->argv + (int)&var_74[-1].nHeight);
            var_98 = var_13;
            var_73 = (type_12 *)var_71(pParse,var_14,pLevel,(int)var_68,(int)var_13,
                                             (int)var_72);
            var_101 = var_74;
            if (var_72 != var_73) {
              if (var_25 == 1) {
                var_101 = var_73;
                if (var_74 != (type_12 *)0x0) {
                  var_22(pParse,(int)var_74);
                }
              }
              else {
                var_7(pVVar52,0x4e,(int)var_73,(int)var_72,(int)var_98);
              }
            }
            var_74 = var_101;
            if ((var_14->eOperator & 1) != 0) {
              if (((var_14->pExpr->flags & 0x800) != 0) && (var_75 != (char *)0x0))
              goto LAB_0009adb4;
              goto _L37768;
            }
            if ((var_14->eOperator & 0x100) != 0) goto _L37768;
            var_72 = var_14->pExpr->pRight;
            if (((var_14->wtFlags & 0x800) == 0) &&
               (var_9 = var_76(var_72), var_9 != 0)) {
              var_7(pVVar52,0x32,(int)var_68->argv + (int)&var_74[-1].nHeight,
                                pLevel->addrBrk,(int)var_98);
            }
            if (var_75 == (char *)0x0) goto _L37768;
            var_79 = var_75[(int)var_68];
            var_78 = var_77(var_72,var_79);
            if ((var_78 == 'A') || (var_79 == 'A')) goto LAB_0009adb4;
            var_80 = 0;
            var_17 = var_72->op;
            while ((type_8)(var_17 + 0x56) < 2) {
              var_72 = var_72->pLeft;
              if (var_17 == 0xaa) {
                var_80 = 1;
              }
              var_17 = var_72->op;
            }
            if (var_17 == 0xad) {
              var_17 = var_72->op2;
            }
            switch(var_17) {
            case 's':
              bVar15 = (bool)(var_79 == 'B' & (var_80 ^ 1));
              break;
            default:
              goto _L37768;
            case 0x96:
            case 0x98:
              bVar15 = 'B' < var_79;
              break;
            case 0x97:
              bVar15 = (bool)(var_80 ^ 1);
              break;
            case 0xa4:
              if (('B' < var_79) && (var_72->iColumn < 0)) goto LAB_0009adb4;
              goto _L37768;
            }
            if (bVar15) {
LAB_0009adb4:
              var_75[(int)var_68] = 'A';
            }
_L37768:
            var_68 = (type_25 *)((int)&var_68->pOut + 1);
            var_70 = var_70 + 4;
          } while (var_69 != var_68);
        }
        if ((var_81 == 0) || (var_75 == (char *)0x0)) {
          var_86 = (char *)0x0;
        }
        else {
          var_86 = var_65(var_26,var_75 + var_59);
        }
        if (var_82 == (type_12 *)0x0) {
          var_25 = pLevel->addrNxt;
        }
        else {
          var_25 = pLevel->addrBignull;
        }
        if (var_61 == (type_23 *)0x0) {
          if (var_83 == (type_23 *)0x0) {
            var_87 = 1;
          }
          else {
            var_87 = (type_22)((var_83->eOperator & 0x28) != 0);
          }
          var_3 = (type_22)(var_62 != 0);
          var_4 = var_59;
          if (bVar18) {
            var_3 = 1;
            var_7(v,0x48,0,(int)(&var_74->op + var_59),(int)var_98);
            local_140 = (type_12 *)0x1;
            var_5 = var_59 + 1;
            var_70 = 0;
          }
          else if (var_82 == (type_12 *)0x0) {
            local_140 = (type_12 *)0x0;
            var_70 = 1;
            var_5 = var_59;
          }
          else {
            var_3 = 1;
            var_5 = var_59 + 1;
            var_7(v,0x48,0,(int)(&var_74->op + var_59),(int)var_98);
            local_140 = (type_12 *)0x0;
            var_70 = 1;
            var_4 = var_5;
          }
        }
        else {
          var_70 = (type_22)((var_61->eOperator & 0x28) != 0);
          if (var_83 == (type_23 *)0x0) {
            var_87 = 1;
          }
          else {
            var_87 = (type_22)((var_83->eOperator & 0x28) != 0);
          }
          var_72 = var_61->pExpr->pRight;
          var_18(pParse,var_72,(int)(&var_74->op + var_59),(type_22)var_63);
          if ((var_61->wtFlags & 0x100) != 0) {
            var_66 = (type_24 *)&dummy_22674;
            if (v->var_26->mallocFailed == '\0') {
              var_66 = v->aOp + v->nOp + -1;
            }
            var_4 = pLevel->iLikeRepCntr;
            var_66->p5 = (type_9)var_4 & 1;
            var_66->p3 = var_4 >> 1;
          }
          var_9 = var_76(var_72);
          if (var_9 != 0) {
            var_7(v,0x32,(int)(&var_74->op + var_59),var_25,(int)var_98
                             );
          }
          if (var_75 != (char *)0x0) {
            var_84(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);
          }
          var_17 = var_72->op;
          var_4 = var_63 + var_59;
          if (var_17 == 0xad) {
            var_17 = var_72->op2;
          }
          var_5 = var_4;
          if (var_17 == 0xae) {
            var_9 = ((var_72->x).pList)->nExpr;
LAB_0009c725:
            if (1 < var_9) {
              local_140 = (type_12 *)0x0;
              var_3 = 1;
              var_70 = 1;
              goto LAB_0009be0e;
            }
          }
          else if (var_17 == 0x88) {
            var_9 = ((var_72->x).pSelect)->pEList->nExpr;
            goto LAB_0009c725;
          }
          var_3 = 1;
          var_20(pLevel,var_61);
          local_140 = (type_12 *)0x0;
        }
LAB_0009be0e:
        var_85((type_2 *)pParse->pVdbe,(int)var_74,var_4,var_75);
        if ((pWVar63->nSkip == 0) || (pWVar63->nSkip != var_5)) {
          if ((pWVar63->wsFlags & 0x40000) != 0) {
            var_7(v,0x76,(int)var_39,0,(int)var_98);
          }
          if (var_82 == (type_12 *)0x0) {
            var_98 = var_74;
            var_51
                      (v,(type_22)""[(int)(&var_13->op + var_70 * 2 + var_3 * 4)],(int)var_39,
                       var_25,(int)var_74,var_5);
          }
          else {
            var_7(v,0x45,1,(int)var_82,(int)var_98);
            var_72 = var_74;
            var_51
                      (v,(type_22)""[(int)(&var_13->op + var_70 * 2 + var_3 * 4)],(int)var_39,
                       var_25,(int)var_74,var_5);
            var_7(v,0xb,0,v->nOp + 2,(int)var_72);
            var_98 = var_74;
            var_51
                      (v,(type_22)""[(int)(&var_13->op2 + (type_22)(1 < var_5) * 4)],(int)var_39,var_25
                       ,(int)var_74,var_5 - var_70);
          }
        }
        if (var_83 == (type_23 *)0x0) {
          if (bVar60) {
            if (var_82 == (type_12 *)0x0) {
              var_7(v,0x48,0,(int)(&var_74->op + var_59),(int)var_98);
              var_87 = 0;
            }
            var_59 = var_59 + 1;
          }
        }
        else {
          var_33 = &var_74->op + var_59;
          var_4 = (type_22)var_81;
          var_72 = var_83->pExpr->pRight;
          var_18(pParse,var_72,(int)var_33,var_4);
          if ((var_83->wtFlags & 0x100) != 0) {
            var_66 = (type_24 *)&dummy_22674;
            if (v->var_26->mallocFailed == '\0') {
              var_66 = v->aOp + v->nOp + -1;
            }
            var_3 = pLevel->iLikeRepCntr;
            var_66->p5 = (type_9)var_3 & 1;
            var_66->p3 = var_3 >> 1;
          }
          var_9 = var_76(var_72);
          if (var_9 != 0) {
            var_7(v,0x32,(int)var_33,var_25,(int)var_98);
          }
          if (var_86 != (char *)0x0) {
            var_84(in_stack_fffffe64,in_stack_fffffe68,(char *)pWVar63);
            var_85((type_2 *)pParse->pVdbe,(int)var_33,var_4,var_86);
          }
          var_17 = var_72->op;
          var_59 = var_4 + var_59;
          if (var_17 == 0xad) {
            var_17 = var_72->op2;
          }
          if (var_17 == 0xae) {
            var_9 = ((var_72->x).pList)->nExpr;
LAB_0009d041:
            if (1 < var_9) {
              var_87 = 1;
              goto LAB_0009bf64;
            }
          }
          else if (var_17 == 0x88) {
            var_9 = ((var_72->x).pSelect)->pEList->nExpr;
            goto LAB_0009d041;
          }
          var_20(pLevel,var_83);
        }
LAB_0009bf64:
        if (var_75 != (char *)0x0) {
          var_58(var_26,var_75);
        }
        if (var_86 != (char *)0x0) {
          var_58(var_26,var_86);
        }
        pLevel->p2 = v->nOp;
        if (var_59 != 0) {
          if (var_82 != (type_12 *)0x0) {
            var_7(v,0x14,(int)var_82,v->nOp + 3,(int)var_98);
          }
          var_98 = var_74;
          var_51
                    (v,(type_22)")\'&("[var_87 + (int)var_13 * 2],(int)var_39,var_25,
                     (int)var_74,var_59);
        }
        if (var_82 != (type_12 *)0x0) {
          var_7(v,0x12,(int)var_82,v->nOp + 2,(int)var_98);
          var_51
                    (v,(type_22)")\'&("[(int)local_140 + (int)var_13 * 2],(int)var_39,var_25,
                     (int)var_74,var_59 + (int)local_140);
          var_98 = var_74;
        }
        var_4 = pWVar63->wsFlags;
        if ((var_4 & 0x40000) != 0) {
          var_7(v,0x76,(int)var_39,1,(int)var_98);
          var_4 = pWVar63->wsFlags;
        }
        if (((var_4 & 0x40) == 0) || ((pWInfo->wctrlFlags & 0x20) != 0)) {
          if ((local_158->pTable->tabFlags & 0x80) == 0) {
            if (((pWInfo->wctrlFlags & 0x400) != 0) ||
               (((pWInfo->wctrlFlags & 0x1000) != 0 &&
                ((pWInfo->eOnePass == '\x01' || (pWVar63->nLTerm == 0)))))) {
              var_72 = (type_12 *)(pParse->nMem + 1);
              pParse->nMem = (int)var_72;
              var_7(v,0x86,(int)var_39,(int)var_72,(int)var_98);
              var_7(v,0x20,(int)var_2,0,(int)var_72);
              var_98 = var_72;
              goto LAB_0009ca27;
            }
            pPVar32 = pWInfo->pParse;
            pVVar52 = pPVar32->pVdbe;
            pWInfo->field_0x30 = pWInfo->field_0x30 | 1;
            var_98 = var_2;
            var_7(pVVar52,0x85,(int)var_39,0,(int)var_2);
            if ((pWInfo->wctrlFlags & 0x20) == 0) {
              bVar60 = false;
              goto LAB_0009c03e;
            }
            pPVar37 = pPVar32->pToplevel;
            if (pPVar32->pToplevel == (type_2 *)0x0) {
              pPVar37 = pPVar32;
            }
            if (pPVar37->writeMask == 0) {
              pTVar10 = local_158->pTable;
              var_89 = (int *)var_88(pPVar32->var_26,
                                                   var_6(in_stack_fffffe68,in_stack_fffffe64));
              if (var_89 != (int *)0x0) {
                *var_89 = (int)pTVar10->nCol;
                var_46 = local_158->nColumn;
                if (1 < var_46) {
                  piVar14 = local_158->aiColumn;
                  var_25 = 0;
                  do {
                    var_90 = piVar14[var_25];
                    var_25 = var_25 + 1;
                    if ((pTVar10->tabFlags & 0x20) == 0) {
                      if (-1 < var_90) goto LAB_0009d40b;
                    }
                    else if (-1 < var_90) {
                      var_90 = var_91(pTVar10,var_90);
LAB_0009d40b:
                      var_89[var_90 + 1] = var_25;
                    }
                  } while (var_46 - 1 != var_25);
                }
                var_92(pVVar52,-1,(char *)var_89,-0xf);
              }
              goto LAB_0009ca27;
            }
            if (pLevel->iLeftJoin == 0) goto LAB_0009c8ce;
          }
          else {
            if (var_2 != var_39) {
              var_35 = local_158->pTable->pIndex;
              if (var_35 != (type_26 *)0x0) {
LAB_0009c96b:
                if ((var_35->field_0x37 & 3) != 2) goto LAB_0009c960;
                var_98 = (type_12 *)var_50(pParse,(type_22)var_35->nKeyCol);
                if (var_35->nKeyCol == 0) {
                  var_4 = 0;
                }
                else {
                  var_25 = 0;
                  do {
                    if (local_158->nColumn == 0) {
LAB_0009c9d1:
                      var_4 = 0xffffffff;
                    }
                    else {
                      var_4 = 0;
                      if (var_35->aiColumn[var_25] != *local_158->aiColumn) {
                        do {
                          var_4 = var_4 + 1;
                          if (var_4 == local_158->nColumn) goto LAB_0009c9d1;
                        } while (var_35->aiColumn[var_25] != local_158->aiColumn[var_4]);
                        var_4 = (type_22)(short)var_4;
                      }
                    }
                    var_33 = &var_98->op + var_25;
                    var_25 = var_25 + 1;
                    var_7(v,0x59,(int)var_39,var_4,(int)var_33);
                    var_4 = (type_22)var_35->nKeyCol;
                  } while (var_25 < (int)var_4);
                }
                var_51(v,0x1d,(int)var_2,p2_00,(int)var_98,var_4);
                goto LAB_0009ca27;
              }
LAB_0009ca50:
                    /* WARNING: Does not return */
              pcVar16 = (type_19 *)var_93();
              (*pcVar16)();
            }
LAB_0009ca27:
            if (pLevel->iLeftJoin == 0) {
              if ((pWInfo->wctrlFlags & 0x20) == 0) {
                bVar60 = false;
                goto LAB_0009c049;
              }
LAB_0009c8ce:
              bVar60 = false;
              goto LAB_0009c1d7;
            }
          }
          bVar60 = false;
        }
        else {
          bVar60 = true;
LAB_0009c03e:
          if (pLevel->iLeftJoin == 0) {
LAB_0009c049:
            var_94 = local_158->aColExpr;
            if ((var_94 != (type_14 *)0x0) || ((local_158->field_0x38 & 4) != 0)) {
              pTVar10 = local_158->pTable;
              var_4 = 0;
              do {
                *(type_28 *)((int)&w.pParse + var_4) = 0;
                var_4 = var_4 + 4;
              } while (var_4 < 0x18);
              w.u.pNC = (type_41 *)&x_1;
              x_1.var_26 = pWInfo->pParse->var_26;
              var_103 = (type_22)local_158->nColumn;
              x_1.iTabCur = (int)var_2;
              x_1.iIdxCur = (int)var_39;
              x_1.pWInfo = pWInfo;
              if (local_158->nColumn != 0) {
                var_25 = 0;
                do {
                  var_90 = local_158->aiColumn[var_25];
                  var_9 = (int)var_90;
                  if (var_90 == -2) {
                    x_1.pIdxExpr = var_94->a[var_25].pExpr;
                    local_a4._0_2_ = 1;
                    local_a0.pNC = (type_41 *)0x0;
                    local_b0.zToken = (char *)sqlite3SelectWalkFail;
                    local_b4 = exprNodeIsConstant;
                    if (x_1.pIdxExpr != (type_12 *)0x0) {
                      var_95((type_31 *)&var_21,x_1.pIdxExpr);
                      if (local_a4._0_2_ == 0) {
                        p_Var20 = whereIndexExprTransNode;
                        var_9 = x_1.iTabCol;
                        goto LAB_0009c17b;
                      }
                      goto LAB_0009c1b2;
                    }
                  }
                  else if ((-1 < var_90) &&
                          (pCVar11 = pTVar10->aCol, (pCVar11[var_9].colFlags & 0x20) != 0)) {
                    var_75 = pCVar11[var_9].zColl;
                    p_Var20 = whereIndexExprTransColumn;
                    if (var_75 != (char *)0x0) {
                      var_12 = 0;
                      do {
                        var_4 = (type_22)(type_8)var_75[var_12];
                        if (var_4 == (type_8)"BINARY"[var_12]) {
                          p_Var20 = whereIndexExprTransColumn;
                          if (var_4 == 0) break;
                        }
                        else if (""[var_4] != ""[(type_8)"BINARY"[var_12]]) goto LAB_0009c1bb;
                        var_12 = var_12 + 1;
                      } while( true );
                    }
LAB_0009c17b:
                    x_1.iTabCol = var_9;
                    w.xExprCallback = p_Var20;
                    x_1.iIdxCol = var_25;
                    if (pWInfo->pWhere != (type_12 *)0x0) {
                      var_95(&w,pWInfo->pWhere);
                    }
                    var_96(&w,pWInfo->pOrderBy);
                    var_96(&w,pWInfo->pResultSet);
LAB_0009c1b2:
                    var_103 = (type_22)local_158->nColumn;
                  }
LAB_0009c1bb:
                  var_25 = var_25 + 1;
                } while (var_25 < (int)var_103);
              }
            }
LAB_0009c1d7:
            if (local_158->pPartIdxWhere != (type_12 *)0x0) {
              var_97(local_158->pPartIdxWhere,(int)var_2,pWC);
            }
          }
        }
        var_4 = pWVar63->wsFlags;
        if ((var_4 & 0x1000) == 0) {
          pLevel->op = (var_13 == (type_12 *)0x0) + '\x04';
        }
        else {
          pLevel->op = 0xad;
        }
        pLevel->var_2 = (int)var_39;
        pLevel->p3 = (type_8)(var_4 >> 0x10) & 1;
        if ((var_4 & 0xf) == 0) {
          pLevel->p5 = '\x01';
        }
        if (!bVar60) {
          var_4 = 1;
          goto LAB_0009b200;
        }
      }
      else {
        var_14 = *pWVar63->aLTerm;
        var_39 = (type_12 *)(pParse->nMem + 1);
        pParse->nMem = (int)var_39;
        var_98 =
             (type_12 *)var_71(pParse,var_14,pLevel,0,(int)var_13,(int)var_39);
        if ((var_39 != var_98) && (var_39 != (type_12 *)0x0)) {
          var_22(pParse,(int)var_39);
        }
        var_7(v,0x1f,(int)var_2,pLevel->addrNxt,(int)var_98);
        pLevel->op = 0xad;
        if ((*(type_22 *)((int)&var_14->prereqAll + 4) & *(type_22 *)((int)&pLevel->notReady + 4)) == 0
            && ((type_22)var_14->prereqAll & (type_22)pLevel->notReady) == 0) {
          var_14->wtFlags = var_14->wtFlags | 4;
          local_158 = (type_26 *)0x0;
          var_4 = 2;
          goto LAB_0009b200;
        }
      }
    }
    else {
      var_4 = (type_22)pWVar63->nLTerm;
      var_39 = (type_12 *)var_50(pParse,var_4 + 2);
      var_70 = pLevel->addrBrk;
      pWVar61 = pWVar63;
      if (var_4 != 0) {
        var_3 = 0;
        do {
          while( true ) {
            var_33 = &var_39->op2 + var_3;
            var_14 = pWVar63->aLTerm[var_3];
            if (var_14 != (type_23 *)0x0) break;
LAB_0009af14:
            var_3 = var_3 + 1;
            if (var_4 == var_3) goto LAB_0009af4f;
          }
          if ((var_14->eOperator & 1) != 0) {
            var_98 = var_13;
            var_71(pParse,var_14,pLevel,var_3,(int)var_13,(int)var_33);
            var_70 = pLevel->addrNxt;
            goto LAB_0009af14;
          }
          var_3 = var_3 + 1;
          var_18(pParse,var_14->pExpr->pRight,(int)var_33,1);
        } while (var_4 != var_3);
      }
LAB_0009af4f:
      var_7(v,0x45,(pWVar61->u).vtab.idxNum,(int)var_39,(int)var_98);
      var_7(v,0x45,var_4,(int)&var_39->affExpr,(int)var_98);
      var_17 = (pWVar61->u).vtab.needFree;
      var_75 = (pWVar61->u).vtab.idxStr;
      var_98 = var_39;
      var_25 = var_7(v,9,(int)var_2,var_70,(int)var_39);
      var_92(v,var_25,var_75,-(type_22)(var_17 == '\0') | 0xfffffff9);
      (pWVar61->u).vtab.needFree = '\0';
      pLevel->var_2 = (int)var_2;
      var_4 = var_4 - 1;
      var_25 = var_4 * 4;
      pLevel->op = (-(pWInfo->eOnePass == '\0') & 0x90U) + 0xad;
      var_99 = (pLevel->u).in.nIn;
      pLevel->p2 = v->nOp;
      for (; var_4 != 0xffffffff; var_4 = var_4 - 1) {
        while (var_14 = *(type_23 **)((int)pWVar61->aLTerm + var_25),
              (var_14->eOperator & 1) != 0) {
          var_99 = var_99 + -1;
          if (((int)var_4 < 0x10) &&
             (((pWVar61->u).btree.nDistinctCol >> (var_4 & 0x1f) & 1) != 0)) goto LAB_0009b18a;
          var_13 = var_14->pExpr->pLeft;
          var_17 = var_13->op;
          if (var_17 == 0xad) {
            var_17 = var_13->op2;
          }
          if (var_17 != 0xae) {
            if (var_17 == 0x88) {
              var_9 = ((var_13->x).pSelect)->pEList->nExpr;
              goto LAB_0009bc51;
            }
LAB_0009b066:
            if (var_26->mallocFailed == '\0') {
              var_9 = (pLevel->u).in.aInLoop[var_99].addrInTop;
              if (var_9 < 0) {
                var_9 = v->nOp + -1;
              }
              var_66 = (type_24 *)&dummy_22674;
              if (v->var_26->mallocFailed == '\0') {
                var_66 = v->aOp + var_9;
              }
              var_98 = (type_12 *)var_66->p3;
              var_7(v,(type_22)var_66->opcode,var_66->var_2,var_66->p2,
                                (int)var_98);
            }
            var_13 = var_42(pParse,0x35,(type_12 *)0x0,in_stack_fffffe64);
            if (var_13 != (type_12 *)0x0) {
              var_13->pLeft = var_14->pExpr->pLeft;
              var_21 = 0;
              local_b4 = (type_20 *)0x0;
              var_72 = var_13;
              var_101 = var_100(var_26,0xad,(type_39 *)&var_21,(int)in_stack_fffffe64);
              var_13->pRight = var_101;
              if (var_101 != (type_12 *)0x0) {
                var_101->iTable = (int)(&var_39->op2 + var_4);
                var_102(pParse,var_13,pLevel->addrCont,0x10);
                var_98 = var_13;
              }
              var_72->pLeft = (type_12 *)0x0;
              var_55(var_26,var_72);
            }
            goto LAB_0009b15d;
          }
          var_9 = ((var_13->x).pList)->nExpr;
LAB_0009bc51:
          if (var_9 == 1) goto LAB_0009b066;
          var_4 = var_4 - 1;
          var_25 = var_25 + -4;
          if (var_4 == 0xffffffff) goto LAB_0009b1e0;
        }
        if (((int)var_4 < 0x10) && (((pWVar61->u).btree.nDistinctCol >> (var_4 & 0x1f) & 1) != 0))
        {
LAB_0009b18a:
          var_20(pLevel,var_14);
        }
LAB_0009b15d:
        var_25 = var_25 + -4;
      }
    }
LAB_0009b1e0:
    local_158 = (type_26 *)0x0;
    var_4 = 2;
  }
  else {
    var_9 = pSVar7->a[var_30].regReturn;
    var_98 = (type_12 *)pSVar7->a[var_30].addrFillSub;
    var_7(v,0xd,var_9,0,(int)var_98);
    var_25 = var_7(v,0xe,var_9,var_25,(int)var_98);
    pLevel->p2 = var_25;
    pLevel->op = '\v';
    local_158 = (type_26 *)0x0;
    var_4 = 2;
  }
LAB_0009b200:
  do {
    var_25 = (pWInfo->sWC).nTerm;
    var_14 = (pWInfo->sWC).a;
    if (var_25 < 1) goto LAB_0009b538;
    var_103 = 0;
    do {
      while (var_46 = var_14->wtFlags, var_3 = var_103, (var_46 & 6) != 0) {
LAB_0009b2d5:
        var_103 = var_3;
        var_14 = var_14 + 1;
        var_25 = var_25 + -1;
        if (var_25 == 0) goto LAB_0009b30a;
      }
      if ((*(type_22 *)((int)&var_14->prereqAll + 4) & *(type_22 *)((int)&pLevel->notReady + 4)) == 0 &&
          ((type_22)var_14->prereqAll & (type_22)pLevel->notReady) == 0) {
        var_13 = var_14->pExpr;
        if (((pSVar7->a[var_30].fg.jointype & 8) != 0) && ((var_13->flags & 1) == 0))
        goto LAB_0009b2d5;
        if (var_4 == 1) {
          x_1.iTabCur = pLevel->iTabCur;
          var_5 = 0;
          do {
            *(type_28 *)((int)&((type_31 *)&var_21)->pParse + var_5) = 0;
            var_5 = var_5 + 4;
          } while (var_5 < 0x18);
          x_1.pIdxExpr = (type_12 *)local_158;
          local_b4 = exprIdxCover;
          local_a0.pNC = (type_41 *)&x_1;
          if (var_13 != (type_12 *)0x0) {
            var_95((type_31 *)&var_21,var_13);
            if (local_a4._0_2_ != 0) {
              var_103 = 2;
              var_3 = var_103;
              goto LAB_0009b2d5;
            }
          }
          var_46 = var_14->wtFlags;
LAB_0009b594:
          if ((var_46 & 0x1000) != 0) {
            var_3 = 3;
            if (var_103 != 0) {
              var_3 = var_103;
            }
            goto LAB_0009b2d5;
          }
        }
        else if (var_4 != 3) goto LAB_0009b594;
        if (((var_46 & 0x200) == 0) || (var_5 = pLevel->iLikeRepCntr, var_5 == 0)) {
          var_102(pParse,var_13,p2_00,0x10);
          var_98 = var_13;
        }
        else {
          var_9 = var_7(v,(-(type_22)((var_5 & 1) == 0) & 0xfffffffe) + 0x14,var_5 >> 1,
                                     0,(int)var_98);
          var_102(pParse,var_13,p2_00,0x10);
          if (var_9 != 0) {
            if (var_9 < 0) {
              var_9 = v->nOp + -1;
            }
            var_66 = (type_24 *)&dummy_22674;
            if (v->var_26->mallocFailed == '\0') {
              var_66 = v->aOp + var_9;
            }
            var_66->p2 = v->nOp;
          }
        }
        var_14->wtFlags = var_14->wtFlags | 4;
        goto LAB_0009b2d5;
      }
      var_14 = var_14 + 1;
      pWInfo->field_0x30 = pWInfo->field_0x30 | 2;
      var_25 = var_25 + -1;
    } while (var_25 != 0);
LAB_0009b30a:
    var_4 = var_103;
  } while (var_103 != 0);
  var_25 = (pWInfo->sWC).nTerm;
  var_14 = (pWInfo->sWC).a;
  if (0 < var_25) {
    var_34 = &pSVar7->a[var_30 - 1].u1;
    do {
      if (((((var_14->wtFlags & 6) == 0) && ((var_14->eOperator & 0x82) != 0)) &&
          ((var_14->eOperator & 0x800) != 0)) &&
         (((type_12 *)var_14->leftCursor == var_2 && ((*(type_8 *)(var_34 + 0xb) & 8) == 0)))) {
        var_13 = var_14->pExpr;
        scan.opMask = 0x83;
        scan.k = 0;
        scan.zCollName = (char *)0x0;
        scan.pIdxExpr = (type_12 *)0x0;
        scan.idxaff = '\0';
        scan.nEquiv = '\x01';
        scan.iEquiv = '\x01';
        scan.pOrigWC = pWC;
        scan.pWC = pWC;
        scan.aiCur[0] = (int)var_2;
        if ((var_14->u).leftColumn != -2) {
          scan.aiColumn[0] = (type_18)(var_14->u).leftColumn;
          var_23 = var_104(&scan);
          if (var_23 != (type_23 *)0x0) {
            var_15 = (type_23 *)0x0;
            do {
              var_4 = (type_22)var_23->prereqRight;
              var_30 = *(type_22 *)((int)&var_23->prereqRight + 4);
              if ((notReady._4_4_ & var_30) == 0 && ((type_22)notReady & var_4) == 0) {
                if ((var_30 == 0 && var_4 == 0) && ((var_23->eOperator & 0x82) != 0))
                goto LAB_0009b454;
                if (var_15 == (type_23 *)0x0) {
                  var_15 = var_23;
                }
              }
              var_23 = var_104(&scan);
            } while (var_23 != (type_23 *)0x0);
            var_23 = var_15;
            if (var_15 != (type_23 *)0x0) {
LAB_0009b454:
              if (((var_23->wtFlags & 4) == 0) &&
                 (((var_39 = var_23->pExpr, (var_23->eOperator & 1) == 0 ||
                   ((var_39->flags & 0x800) == 0)) || (((var_39->x).pSelect)->pEList->nExpr < 2)))
                 ) {
                var_21._0_1_ = var_39->op;
                var_21._1_1_ = var_39->affExpr;
                var_21._2_1_ = var_39->op2;
                var_21._3_1_ = var_39->field_0x3;
                local_b4 = (type_20 *)var_39->flags;
                local_b0 = var_39->u;
                local_a8 = var_39->pRight;
                local_a4 = var_39->x;
                local_a0 = (type_35)var_39->nHeight;
                local_9c = var_39->iTable;
                local_98._0_2_ = var_39->iColumn;
                local_98._2_2_ = var_39->iAgg;
                local_94._0_2_ = var_39->iRightJoinTable;
                local_94._2_2_ = *(type_42 *)&var_39->field_0x26;
                local_90 = var_39->pAggInfo;
                local_8c.pTab = (var_39->y).pTab;
                local_8c.sub.regReturn = (var_39->y).sub.regReturn;
                local_ac = var_13->pLeft;
                var_98 = (type_12 *)&var_21;
                var_102(pParse,var_98,p2_00,0x10);
              }
            }
          }
        }
      }
      var_14 = var_14 + 1;
      var_25 = var_25 + -1;
    } while (var_25 != 0);
  }
LAB_0009b538:
  if (pLevel->iLeftJoin == 0) {
    notReady = pLevel->notReady;
  }
  else {
    pLevel->addrFirst = v->nOp;
    var_7(v,0x45,1,pLevel->iLeftJoin,(int)var_98);
    var_30 = *(type_22 *)((int)&pLevel->notReady + 4);
    var_25 = (pWInfo->sWC).nTerm;
    var_14 = (pWInfo->sWC).a;
    var_4 = (type_22)pLevel->notReady;
    notReady = pLevel->notReady;
    if (0 < var_25) {
      var_9 = 0;
      do {
        if (((var_14->wtFlags & 6) == 0) &&
           ((*(type_22 *)((int)&var_14->prereqAll + 4) & var_30) == 0 &&
            ((type_22)var_14->prereqAll & var_4) == 0)) {
          var_102(pParse,var_14->pExpr,p2_00,0x10);
          var_14->wtFlags = var_14->wtFlags | 4;
          var_25 = (pWInfo->sWC).nTerm;
          var_4 = (type_22)pLevel->notReady;
          var_30 = *(type_22 *)((int)&pLevel->notReady + 4);
        }
        notReady = var_6(var_30,var_4);
        var_9 = var_9 + 1;
        var_14 = var_14 + 1;
      } while (var_9 < var_25);
    }
  }
LAB_0009b549:
  if (var_105 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_106();
  }
  return notReady;
LAB_0009c960:
  var_35 = var_35->pNext;
  if (var_35 == (type_26 *)0x0) goto LAB_0009ca50;
  goto LAB_0009c96b;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

undefined8 __regparm3
MASKED(int *param_1,int *param_2,int *param_3,uint param_4,int *param_5,uint param_6,
            uint param_7)

{
  int *piVar1;
  int iVar2;
  short *psVar3;
  byte bVar4;
  undefined1 uVar5;
  ushort uVar6;
  ushort uVar7;
  int iVar8;
  int iVar9;
  char *pcVar10;
  int *piVar11;
  code *pcVar12;
  bool bVar13;
  char cVar14;
  char cVar15;
  byte bVar16;
  short sVar17;
  uint uVar18;
  uint uVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  undefined4 *puVar23;
  int *piVar24;
  int iVar25;
  undefined1 *puVar26;
  int iVar27;
  uint *puVar28;
  uint *puVar29;
  int iVar30;
  int *piVar31;
  ushort uVar32;
  uint uVar33;
  int iVar34;
  uint uVar35;
  byte *pbVar36;
  uint uVar37;
  uint uVar38;
  undefined4 *puVar39;
  int iVar40;
  int iVar41;
  int iVar42;
  int iVar43;
  uint *puVar44;
  uint uVar45;
  int iVar46;
  int in_GS_OFFSET;
  bool bVar47;
  bool bVar48;
  uint *local_194;
  int local_184;
  uint local_17c;
  int local_168;
  int local_158;
  uint local_154;
  int local_144;
  int local_140;
  int local_13c;
  int local_134;
  int *local_12c;
  int local_128;
  int *local_120;
  uint local_118;
  code *local_f0 [6];
  int *local_d8;
  int local_d4;
  int local_d0;
  int local_cc;
  int local_c8;
  int local_c4;
  int *local_c0;
  undefined4 local_bc;
  int local_b8;
  code *local_b4;
  code *local_b0;
  undefined4 local_ac;
  int local_a8;
  int local_a4;
  int *local_a0;
  int local_9c;
  int local_98;
  int local_94;
  int local_90;
  int local_8c;
  int local_88;
  int *local_84;
  int *local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined2 local_74;
  undefined1 local_72;
  undefined4 local_70;
  undefined4 local_6c;
  int local_68;
  undefined2 local_3c;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x9a949;
  iVar41 = *param_1;
  iVar42 = param_5[0x12];
  uVar18 = (uint)*(byte *)(param_5 + 0xd);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  piVar1 = param_3 + 0x12;
  iVar8 = param_3[1];
  iVar9 = *(int *)(iVar8 + 0x30 + uVar18 * 0x44);
  uVar35 = param_7;
  uVar45 = param_6;
  if (0 < param_3[0x79]) {
    if (param_3[0x7a] == iVar9) {
      uVar45 = 0xfffffffe;
      uVar35 = 0xffffffff;
    }
    else {
      uVar19 = 0;
      do {
        uVar33 = uVar19 + 1;
        if (param_3[0x79] == uVar33) goto LAB_0009a9fc;
        iVar20 = uVar19 + 0x7b;
        uVar19 = uVar33;
      } while (iVar9 != param_3[iVar20]);
      bVar48 = (uVar33 & 0x20) == 0;
      uVar45 = ~((uint)bVar48 << ((byte)uVar33 & 0x1f));
      uVar35 = ~((uint)!bVar48 << ((byte)uVar33 & 0x1f));
    }
    uVar35 = uVar35 & param_7;
    uVar45 = uVar45 & param_6;
  }
LAB_0009a9fc:
  param_5[0x14] = uVar35;
  param_5[0x13] = uVar45;
  uVar35 = param_3[0x11];
  uVar45 = param_3[0x10];
  iVar20 = param_1[0xe] + -1;
  param_1[0xe] = iVar20;
  param_5[4] = iVar20;
  param_5[3] = iVar20;
  iVar40 = param_1[0xe] + -1;
  param_1[0xe] = iVar40;
  param_5[6] = iVar40;
  if (((char)param_5[0xd] != '\0') && ((*(byte *)(iVar8 + 0x2c + uVar18 * 0x44) & 8) != 0)) {
    iVar34 = param_1[0xb] + 1;
    param_1[0xb] = iVar34;
    *param_5 = iVar34;
    FUN_00049630(iVar34);
  }
  if (param_4 == 0) {
    uVar19 = 0;
  }
  else {
    uVar19 = param_4;
    if (param_3[param_4 * 0x15 + 0xba] == 0) {
      piVar31 = param_3 + param_4 * 0x15 + 0xa5;
      do {
        uVar19 = uVar19 - 1;
        if (uVar19 == 0) break;
        iVar34 = *piVar31;
        piVar31 = piVar31 + -0x15;
      } while (iVar34 == 0);
    }
  }
  iVar34 = uVar18 * 0x44 + iVar8;
  bVar4 = *(byte *)(iVar34 + 0x2d);
  if ((bVar4 & 0x10) == 0) {
    uVar45 = uVar45 >> ((byte)param_4 & 0x1f) | uVar35 << 0x20 - ((byte)param_4 & 0x1f);
    if ((param_4 & 0x20) != 0) {
      uVar45 = uVar35 >> ((byte)param_4 & 0x1f);
    }
    uVar33 = uVar45 & 1;
    uVar35 = *(uint *)(iVar42 + 0x24);
    if ((uVar35 & 0x400) == 0) {
      if (((uVar35 & 0x100) == 0) || ((uVar35 & 5) == 0)) {
        iVar34 = param_3[uVar19 * 0x15 + 0xbd];
        if ((uVar35 & 0x102) == 0x102) {
          if ((uVar35 & 0x20) != 0) {
            piVar24 = *(int **)(iVar42 + 0x30);
            piVar31 = (int *)*piVar24;
            if ((uVar35 & 0x10) != 0) {
              iVar41 = 4;
              goto LAB_0009c28b;
            }
            piVar24 = piVar31;
            if (uVar33 != 0) goto LAB_0009c549;
            if (piVar31 == (int *)0x0) goto LAB_0009bc9a;
            piVar24 = (int *)0x0;
            goto LAB_0009c2a8;
          }
          if ((uVar35 & 0x10) == 0) {
            if (uVar33 != 0) {
              piVar24 = (int *)0x0;
              goto LAB_0009c549;
            }
LAB_0009bc9a:
            FUN_00049630(iVar34);
            iVar41 = param_2[0x1a];
LAB_0009bcbb:
            *(undefined1 *)((int)param_5 + 0x35) = 5;
          }
          else {
            iVar41 = 0;
            piVar31 = (int *)0x0;
            piVar24 = *(int **)(iVar42 + 0x30);
LAB_0009c28b:
            piVar11 = *(int **)((int)piVar24 + iVar41);
            if (uVar33 == 0) {
              piVar24 = piVar11;
              if (piVar31 == (int *)0x0) goto LAB_0009c549;
LAB_0009c2a8:
              local_24 = 0x18161719;
              pcVar10 = *(char **)(*piVar31 + 0x10);
              cVar15 = *pcVar10;
              if (cVar15 == -0x53) {
                cVar15 = pcVar10[2];
              }
              if (cVar15 == -0x52) {
                iVar41 = **(int **)(pcVar10 + 0x14);
LAB_0009cf97:
                if (iVar41 < 2) goto LAB_0009c2d7;
                if (*(char *)((int)param_1 + 0x13) == '\0') {
                  local_194 = (uint *)(param_1[0xb] + 1);
                  param_1[0xb] = (int)local_194;
                }
                else {
                  bVar16 = *(char *)((int)param_1 + 0x13) - 1;
                  *(byte *)((int)param_1 + 0x13) = bVar16;
                  local_194 = (uint *)param_1[bVar16 + 0x26];
                }
                local_b8 = (int)local_194;
                FUN_00095030(1);
              }
              else {
                if (cVar15 == -0x78) {
                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
                  goto LAB_0009cf97;
                }
LAB_0009c2d7:
                local_194 = (uint *)FUN_000958f0();
                FUN_00020250();
              }
              FUN_000493f0(iVar20,local_194);
              if (local_b8 != 0) {
                FUN_000254e0();
              }
            }
            else {
              piVar24 = piVar31;
              piVar31 = piVar11;
              if (piVar11 != (int *)0x0) goto LAB_0009c2a8;
LAB_0009c549:
              FUN_00049630(iVar34);
            }
            if (piVar24 != (int *)0x0) {
              iVar41 = *piVar24;
              param_1[0xb] = param_1[0xb] + 1;
              FUN_00095030(1);
              pcVar10 = *(char **)(iVar41 + 0x10);
              cVar15 = *pcVar10;
              if (cVar15 == -0x53) {
                cVar15 = pcVar10[2];
              }
              if (cVar15 == -0x52) {
                iVar41 = **(int **)(pcVar10 + 0x14);
LAB_0009d05c:
                if (iVar41 < 2) goto LAB_0009c3ac;
              }
              else {
                if (cVar15 == -0x78) {
                  iVar41 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
                  goto LAB_0009d05c;
                }
LAB_0009c3ac:
                FUN_00020250();
              }
              iVar41 = param_2[0x1a];
              if (uVar33 == 0) {
                *(undefined1 *)((int)param_5 + 0x35) = 5;
                param_5[0xf] = iVar41;
                param_5[0xe] = iVar9;
              }
              else {
                *(undefined1 *)((int)param_5 + 0x35) = 4;
                param_5[0xf] = iVar41;
                param_5[0xe] = iVar9;
              }
              iVar41 = param_1[0xb] + 1;
              param_1[0xb] = iVar41;
              FUN_00049630(iVar41);
              FUN_000493f0(iVar20,iVar41);
              if (0 < param_2[0x1a]) {
                local_158 = 0;
                local_194 = (uint *)0x2;
                *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x53;
                goto LAB_0009b1f0;
              }
              goto LAB_0009b1e0;
            }
            iVar41 = param_2[0x1a];
            if (uVar33 == 0) goto LAB_0009bcbb;
            *(undefined1 *)((int)param_5 + 0x35) = 4;
          }
          param_5[0xf] = iVar41;
          local_158 = 0;
          local_194 = (uint *)0x2;
          param_5[0xe] = iVar9;
          goto LAB_0009b1f0;
        }
        if ((uVar35 & 0x200) == 0) {
          if ((uVar35 & 0x2000) == 0) {
            if ((bVar4 & 0x20) == 0) {
              uVar5 = (&DAT_000d8764)[uVar33];
              param_5[0xe] = iVar9;
              *(undefined1 *)((int)param_5 + 0x35) = uVar5;
              iVar41 = FUN_00049630(iVar34);
              *(undefined1 *)((int)param_5 + 0x37) = 1;
              param_5[0xf] = iVar41 + 1;
              goto LAB_0009b1e0;
            }
            *(undefined1 *)((int)param_5 + 0x35) = 0xad;
            local_158 = 0;
            local_194 = (uint *)0x2;
            goto LAB_0009b1f0;
          }
          iVar20 = param_1[10];
          param_1[10] = iVar20 + 1;
          iVar21 = param_1[0xb] + 1;
          iVar22 = param_1[0xe] + -1;
          param_1[0xb] = iVar21;
          param_1[0xe] = iVar22;
          iVar34 = *(int *)(iVar8 + 0x18 + uVar18 * 0x44);
          piVar31 = (int *)**(int **)(iVar42 + 0x30);
          iVar42 = piVar31[7];
          *(undefined1 *)((int)param_5 + 0x35) = 0x41;
          param_5[0xe] = iVar21;
          if (*(byte *)(param_3 + 0xb) < 2) {
            local_194 = (uint *)param_3[1];
          }
          else {
            param_4 = *(byte *)(param_3 + 0xb) - param_4;
            iVar43 = (param_4 - 1) * 0x44;
            uVar35 = iVar43 + 0x4c;
            if (iVar41 == 0) {
              if ((uVar35 == 0) || (0x7ffffefe < iVar43 + 0x4bU)) goto LAB_0009b549;
              if (DAT_00106360 == 0) {
                local_194 = (uint *)(*DAT_00106380)(uVar35);
              }
              else {
                local_194 = (uint *)FUN_000280e0();
              }
LAB_0009d302:
              if (local_194 == (uint *)0x0) goto LAB_0009b549;
            }
            else {
              if (*(ushort *)(iVar41 + 0x114) < uVar35) {
                if (*(int *)(iVar41 + 0x110) == 0) {
                  *(int *)(iVar41 + 0x124) = *(int *)(iVar41 + 0x124) + 1;
                }
                else if (*(char *)(iVar41 + 0x4d) != '\0') goto LAB_0009b549;
LAB_0009d2f9:
                local_194 = (uint *)FUN_0002eee0();
                goto LAB_0009d302;
              }
              if (uVar35 < 0x81) {
                local_194 = *(uint **)(iVar41 + 0x138);
                if (local_194 == (uint *)0x0) {
                  local_194 = *(uint **)(iVar41 + 0x134);
                  if (local_194 == (uint *)0x0) goto LAB_0009d46c;
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x134) = uVar35;
                }
                else {
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x138) = uVar35;
                }
              }
              else {
LAB_0009d46c:
                local_194 = *(uint **)(iVar41 + 0x130);
                if (local_194 == (uint *)0x0) {
                  local_194 = *(uint **)(iVar41 + 300);
                  if (local_194 == (uint *)0x0) {
                    *(int *)(iVar41 + 0x128) = *(int *)(iVar41 + 0x128) + 1;
                    goto LAB_0009d2f9;
                  }
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 300) = uVar35;
                }
                else {
                  uVar35 = *local_194;
                  *(int *)(iVar41 + 0x120) = *(int *)(iVar41 + 0x120) + 1;
                  *(uint *)(iVar41 + 0x130) = uVar35;
                }
              }
            }
            local_194[1] = param_4 & 0xff;
            *local_194 = param_4 & 0xff;
            puVar28 = (uint *)(iVar8 + 8 + uVar18 * 0x44);
            local_194[2] = *puVar28;
            local_194[0x12] = puVar28[0x10];
            iVar41 = (int)local_194 + (8 - (int)((uint)(local_194 + 3) & 0xfffffffc));
            puVar23 = (undefined4 *)((int)puVar28 - iVar41);
            puVar39 = (undefined4 *)((uint)(local_194 + 3) & 0xfffffffc);
            for (uVar35 = iVar41 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {
              *puVar39 = *puVar23;
              puVar23 = puVar23 + (uint)bVar16 * -2 + 1;
              puVar39 = puVar39 + (uint)bVar16 * -2 + 1;
            }
            iVar41 = param_3[1];
            if (0 < (int)(param_4 - 1)) {
              pbVar36 = (byte *)(param_5 + 0x22);
              puVar28 = local_194 + 0x13;
              do {
                bVar4 = *pbVar36;
                pbVar36 = pbVar36 + 0x54;
                puVar44 = (uint *)((uint)bVar4 * 0x44 + iVar41 + 8);
                *puVar28 = *puVar44;
                puVar28[0x10] = puVar44[0x10];
                puVar29 = puVar28 + 0x11;
                iVar43 = (int)puVar28 - (int)((uint)(puVar28 + 1) & 0xfffffffc);
                puVar23 = (undefined4 *)((int)puVar44 - iVar43);
                puVar39 = (undefined4 *)((uint)(puVar28 + 1) & 0xfffffffc);
                for (uVar35 = iVar43 + 0x44U >> 2; uVar35 != 0; uVar35 = uVar35 - 1) {
                  *puVar39 = *puVar23;
                  puVar23 = puVar23 + (uint)bVar16 * -2 + 1;
                  puVar39 = puVar39 + (uint)bVar16 * -2 + 1;
                }
                puVar28 = puVar29;
              } while (local_194 + param_4 * 0x11 + 2 != puVar29);
            }
          }
          if ((*(byte *)(param_3 + 10) & 0x10) == 0) {
            if ((*(byte *)(iVar34 + 0x24) & 0x80) != 0) {
              for (iVar41 = *(int *)(iVar34 + 8); iVar41 != 0; iVar41 = *(int *)(iVar41 + 0x14)) {
                if ((*(byte *)(iVar41 + 0x37) & 3) == 2) {
                  param_1[10] = param_1[10] + 1;
                  FUN_00049630(*(undefined2 *)(iVar41 + 0x32));
                  FUN_00051750();
                  goto LAB_0009b879;
                }
              }
              param_1[10] = param_1[10] + 1;
              goto LAB_0009ca50;
            }
            iVar41 = param_1[0xb];
            param_1[0xb] = iVar41 + 1;
            FUN_00049630(iVar41 + 1);
LAB_0009b879:
            local_140 = param_1[0xb] + 1;
            param_1[0xb] = local_140;
          }
          else {
            local_140 = 0;
          }
          iVar27 = 0;
          iVar43 = 0;
          iVar21 = FUN_00049630(iVar21);
          iVar41 = param_3[0x15];
          if (iVar41 < 2) {
LAB_0009d0ac:
            local_134 = 0;
          }
          else {
            do {
              piVar24 = (int *)(iVar27 * 0x30 + param_3[0x17]);
              if (((piVar24 != piVar31) && ((*(byte *)((int)piVar24 + 10) & 6) == 0)) &&
                 ((*(ushort *)(piVar24 + 3) & 0x1fff) != 0)) {
                if (*piVar24 != 0) {
                  FUN_0005dca0();
                }
                iVar43 = FUN_000559f0();
                iVar41 = param_3[0x15];
              }
              iVar27 = iVar27 + 1;
            } while (iVar27 < iVar41);
            if (iVar43 == 0) goto LAB_0009d0ac;
            local_134 = FUN_000556e0();
          }
          uVar32 = *(ushort *)(param_3 + 10);
          FUN_000496a0(param_1,1,"MULTI-INDEX OR");
          iVar41 = *(int *)(iVar42 + 0xc);
          if (iVar41 < 1) {
            iVar41 = param_1[0x36];
            if (iVar41 != 0) {
              piVar31 = (int *)param_1[2];
              local_13c = 0;
              bVar48 = false;
              goto LAB_0009cb9d;
            }
            param_5[0x10] = 0;
            bVar48 = false;
          }
          else {
            bVar48 = false;
            local_13c = 0;
            iVar43 = 0;
            do {
              puVar23 = (undefined4 *)(iVar43 * 0x30 + *(int *)(iVar42 + 0x14));
              iVar27 = iVar43 + 1;
              if ((puVar23[5] == iVar9) || ((*(byte *)((int)puVar23 + 0xd) & 4) != 0)) {
                if (local_134 != 0) {
                  *(undefined4 *)(local_134 + 0xc) = *puVar23;
                }
                FUN_000496a0(param_1,1,"INDEX %d",iVar27);
                iVar41 = FUN_0009d580(0,0,uVar32 & 0x400 | 0x20,iVar20);
                if (iVar41 != 0) {
                  piVar31 = (int *)param_1[0x1d];
                  if ((int *)param_1[0x1d] == (int *)0x0) {
                    piVar31 = param_1;
                  }
                  if (*(char *)((int)piVar31 + 0xcb) == '\x02') {
                    FUN_0005ac00(0);
                  }
                  if ((*(byte *)(param_3 + 10) & 0x10) == 0) {
                    if (*(int *)(iVar42 + 0xc) + -1 == iVar43) {
                      iVar43 = -1;
                    }
                    if ((*(byte *)(iVar34 + 0x24) & 0x80) == 0) {
                      FUN_00095620(0xffffffff,local_140);
                      iVar25 = FUN_000493f0(0,local_140);
                      if (*(char *)(*param_2 + 0x4d) == '\0') {
                        iVar2 = param_2[0x19] + iVar25 * 0x14;
                        *(undefined1 *)(iVar2 + 1) = 0xfd;
                        *(int *)(iVar2 + 0x10) = iVar43;
                      }
                    }
                    else {
                      iVar2 = *(int *)(iVar34 + 8);
                      while( true ) {
                        if (iVar2 == 0) goto LAB_0009ca50;
                        if ((*(byte *)(iVar2 + 0x37) & 3) == 2) break;
                        iVar2 = *(int *)(iVar2 + 0x14);
                      }
                      uVar35 = (uint)*(ushort *)(iVar2 + 0x32);
                      iVar30 = FUN_00025510();
                      if (uVar35 != 0) {
                        iVar46 = 0;
                        iVar25 = iVar30;
                        do {
                          psVar3 = (short *)(*(int *)(iVar2 + 4) + iVar46);
                          iVar46 = iVar46 + 2;
                          FUN_00095620((int)*psVar3,iVar25);
                          iVar25 = iVar25 + 1;
                        } while (uVar35 * 2 != iVar46);
                      }
                      if (iVar43 == 0) {
                        FUN_000493f0(uVar35,local_140);
                        iVar25 = 0;
                        FUN_00068470(local_140,iVar30,uVar35);
                      }
                      else {
                        iVar25 = FUN_000493f0(0,iVar30);
                        iVar2 = *param_2;
                        if (*(char *)(iVar2 + 0x4d) == '\0') {
                          iVar2 = param_2[0x19] + iVar25 * 0x14;
                          *(undefined1 *)(iVar2 + 1) = 0xfd;
                          *(uint *)(iVar2 + 0x10) = uVar35;
                        }
                        if (-1 < iVar43) {
                          FUN_000493f0(uVar35,local_140,iVar2,iVar2);
                          FUN_00068470(local_140,iVar30,uVar35);
                          if (0 < param_2[0x1a]) {
                            *(undefined2 *)(param_2[0x19] + param_2[0x1a] * 0x14 + -0x12) = 0x10;
                          }
                        }
                      }
                      if (uVar35 == 1) {
                        FUN_00029ad0();
                      }
                      else if (param_1[7] < (int)uVar35) {
                        param_1[7] = uVar35;
                        param_1[8] = iVar30;
                      }
                    }
                    FUN_00049630(iVar22);
                    if (iVar25 != 0) {
                      if (iVar25 < 0) {
                        iVar25 = param_2[0x1a] + -1;
                      }
                      puVar26 = &DAT_001075d0;
                      if (*(char *)(*param_2 + 0x4d) == '\0') {
                        puVar26 = (undefined1 *)(param_2[0x19] + iVar25 * 0x14);
                      }
                      *(int *)(puVar26 + 8) = param_2[0x1a];
                    }
                  }
                  else {
                    FUN_00049630(iVar22);
                  }
                  bVar13 = true;
                  if ((*(byte *)(iVar41 + 0x30) & 2) == 0) {
                    bVar13 = bVar48;
                  }
                  bVar48 = bVar13;
                  if (((*(byte *)(*(int *)(iVar41 + 0x330) + 0x25) & 2) == 0) ||
                     ((iVar41 = *(int *)(*(int *)(iVar41 + 0x330) + 0x20), iVar27 != 1 &&
                      (local_13c != iVar41)))) {
                    local_13c = 0;
                  }
                  else {
                    local_13c = iVar41;
                    if (((*(byte *)(iVar34 + 0x24) & 0x80) != 0) &&
                       (local_13c = 0, (*(byte *)(iVar41 + 0x37) & 3) != 2)) {
                      local_13c = iVar41;
                    }
                  }
                  FUN_00069230();
                  iVar41 = param_1[0x36];
                  if (iVar41 != 0) {
                    piVar31 = (int *)param_1[2];
                    if (iVar41 < 0) {
                      iVar41 = piVar31[0x1a] + -1;
                    }
                    puVar26 = &DAT_001075d0;
                    if (*(char *)(*piVar31 + 0x4d) == '\0') {
                      puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);
                    }
                    iVar41 = *(int *)(puVar26 + 8);
                  }
                  param_1[0x36] = iVar41;
                }
                iVar41 = *(int *)(iVar42 + 0xc);
              }
              iVar43 = iVar27;
            } while (iVar27 < iVar41);
            iVar41 = param_1[0x36];
            if (iVar41 != 0) {
              piVar31 = (int *)param_1[2];
LAB_0009cb9d:
              if (iVar41 < 0) {
                iVar41 = piVar31[0x1a] + -1;
              }
              puVar26 = &DAT_001075d0;
              if (*(char *)(*piVar31 + 0x4d) == '\0') {
                puVar26 = (undefined1 *)(piVar31[0x19] + iVar41 * 0x14);
              }
              iVar41 = *(int *)(puVar26 + 8);
            }
            param_1[0x36] = iVar41;
            param_5[0x10] = local_13c;
            if (local_13c != 0) {
              param_5[2] = iVar20;
            }
          }
          if (local_134 != 0) {
            *(undefined4 *)(local_134 + 0xc) = 0;
            FUN_00053f30();
          }
          iVar41 = param_2[0x1a] + -1;
          if (-1 < iVar21) {
            iVar41 = iVar21;
          }
          puVar26 = &DAT_001075d0;
          if (*(char *)(*param_2 + 0x4d) == '\0') {
            puVar26 = (undefined1 *)(param_2[0x19] + iVar41 * 0x14);
          }
          *(int *)(puVar26 + 4) = param_2[0x1a];
          FUN_00049630(param_5[3]);
          FUN_000330b0();
          if ((1 < *(byte *)(param_3 + 0xb)) && (local_194 != (uint *)0x0)) {
            FUN_00023410();
          }
          if (!bVar48) {
            FUN_00020250();
            local_158 = 0;
            local_194 = (uint *)0x2;
            goto LAB_0009b1f0;
          }
          goto LAB_0009b1e0;
        }
        uVar32 = *(ushort *)(iVar42 + 0x1c);
        uVar6 = *(ushort *)(iVar42 + 0x18);
        local_118 = (uint)uVar6;
        uVar7 = *(ushort *)(iVar42 + 0x1a);
        local_158 = *(int *)(iVar42 + 0x20);
        iVar41 = param_5[2];
        if ((uVar35 & 0x20) == 0) {
          uVar37 = 0;
          local_120 = (int *)0x0;
          uVar19 = local_118;
        }
        else {
          uVar37 = (uint)uVar7;
          local_120 = *(int **)(*(int *)(iVar42 + 0x30) + local_118 * 4);
          uVar19 = local_118 + 1;
        }
        iVar20 = param_1[0xb];
        local_168 = iVar20 + 1;
        if ((uVar35 & 0x10) == 0) {
          bVar48 = false;
          local_12c = (int *)0x0;
        }
        else {
          local_12c = *(int **)(*(int *)(iVar42 + 0x30) + uVar19 * 4);
          if (uVar37 < uVar32) {
            uVar37 = (uint)uVar32;
          }
          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {
            param_1[0xb] = local_168;
            param_5[0xb] = local_168;
            FUN_00049630(local_168);
            param_5[0xc] = param_2[0x1a];
            iVar20 = param_5[0xb];
            param_5[0xb] = iVar20 * 2;
            param_5[0xb] = *(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\x01' ^ uVar33 |
                           iVar20 * 2;
            uVar35 = *(uint *)(iVar42 + 0x24);
            iVar20 = param_1[0xb];
            local_168 = iVar20 + 1;
          }
          bVar48 = false;
          if (local_120 == (int *)0x0) {
            iVar34 = (int)*(short *)(*(int *)(local_158 + 4) + local_118 * 2);
            if (iVar34 < 0) {
              bVar48 = iVar34 == -2;
            }
            else {
              bVar48 = *(char *)(*(int *)(*(int *)(local_158 + 0xc) + 4) + iVar34 * 0x14 + 0xc) ==
                       '\0';
            }
          }
        }
        local_128 = 0;
        if ((uVar35 & 0x80030) == 0x80000) {
          iVar34 = *param_5;
          param_1[0xb] = local_168;
          param_5[9] = local_168;
          iVar20 = local_168;
          if (iVar34 != 0) {
            FUN_00049630(local_168);
            iVar20 = param_1[0xb];
          }
          iVar34 = param_1[0xe];
          bVar48 = true;
          uVar37 = 1;
          param_1[0xe] = iVar34 + -1;
          local_128 = local_168;
          param_5[10] = iVar34 + -1;
          local_168 = iVar20 + 1;
        }
        if (uVar6 < *(ushort *)(local_158 + 0x32)) {
          if ((*(char *)(*(int *)(local_158 + 0x1c) + local_118) == '\0') == uVar33)
          goto LAB_0009c48d;
LAB_0009ac34:
          uVar6 = uVar32;
          bVar48 = false;
          bVar13 = bVar48;
        }
        else {
          if ((*(ushort *)(local_158 + 0x32) != uVar6) || ((uVar45 & 1) == 0)) goto LAB_0009ac34;
LAB_0009c48d:
          piVar31 = local_12c;
          bVar13 = false;
          local_12c = local_120;
          uVar6 = uVar7 & 0xff;
          local_120 = piVar31;
          uVar7 = uVar32;
        }
        piVar31 = (int *)param_1[2];
        iVar34 = param_5[0x12];
        uVar32 = *(ushort *)(iVar34 + 0x2a);
        uVar35 = (uint)uVar32;
        uVar45 = (uint)*(ushort *)(iVar34 + 0x18);
        param_1[0xb] = iVar20 + uVar37 + uVar45;
        FUN_0002e410();
        iVar20 = FUN_000300b0();
        if (uVar32 != 0) {
          if (uVar33 == 0) {
            FUN_00049630(0);
            iVar21 = FUN_00049630(0);
          }
          else {
            FUN_00049630(0);
            iVar21 = FUN_00049630(0);
          }
          iVar22 = FUN_000493f0(0,local_168);
          if (*(char *)(*piVar31 + 0x4d) == '\0') {
            iVar27 = piVar31[0x19];
            iVar43 = iVar27 + iVar22 * 0x14;
            *(undefined1 *)(iVar43 + 1) = 0xfd;
            *(uint *)(iVar43 + 0x10) = uVar35;
            param_5[5] = iVar22;
            iVar22 = piVar31[0x1a];
            if (iVar21 < 0) {
              iVar27 = piVar31[0x19];
              iVar21 = iVar22 + -1;
            }
            puVar26 = (undefined1 *)(iVar27 + iVar21 * 0x14);
          }
          else {
            param_5[5] = iVar22;
            puVar26 = &DAT_001075d0;
            iVar22 = piVar31[0x1a];
          }
          *(int *)(puVar26 + 8) = iVar22;
          uVar19 = 0;
          do {
            uVar38 = uVar19 + 1;
            FUN_000493f0(uVar19,local_168 + uVar19);
            uVar19 = uVar38;
          } while (uVar38 != uVar35);
        }
        if (uVar35 < uVar45) {
          local_154 = uVar35 * 4;
          do {
            piVar31 = *(int **)(*(int *)(iVar34 + 0x30) + local_154);
            iVar21 = local_168 + uVar35;
            iVar22 = FUN_0009a2d0(uVar35,uVar33,iVar21);
            if (iVar21 != iVar22) {
              if (uVar37 + uVar45 == 1) {
                bVar47 = local_168 != 0;
                local_168 = iVar22;
                if (bVar47) {
                  FUN_000254e0();
                }
              }
              else {
                FUN_00049630(iVar21);
              }
            }
            if ((*(ushort *)(piVar31 + 3) & 1) != 0) {
              if (((*(byte *)(*piVar31 + 5) & 8) != 0) && (iVar20 != 0)) goto LAB_0009adb4;
              goto LAB_0009adbc;
            }
            if ((*(ushort *)(piVar31 + 3) & 0x100) != 0) goto LAB_0009adbc;
            pcVar10 = *(char **)(*piVar31 + 0x10);
            if (((*(byte *)((int)piVar31 + 0xb) & 8) == 0) && (iVar21 = FUN_0001fe30(), iVar21 != 0)
               ) {
              FUN_00049630(param_5[3]);
            }
            if (iVar20 == 0) goto LAB_0009adbc;
            cVar15 = *(char *)(iVar20 + uVar35);
            cVar14 = FUN_0002e3d0();
            if ((cVar14 == 'A') || (cVar15 == 'A')) goto LAB_0009adb4;
            bVar16 = 0;
            cVar14 = *pcVar10;
            while ((byte)(cVar14 + 0x56U) < 2) {
              pcVar10 = *(char **)(pcVar10 + 0xc);
              if (cVar14 == -0x56) {
                bVar16 = 1;
              }
              cVar14 = *pcVar10;
            }
            if (cVar14 == -0x53) {
              cVar14 = pcVar10[2];
            }
            switch(cVar14) {
            case 's':
              bVar47 = (bool)(cVar15 == 'B' & (bVar16 ^ 1));
              break;
            default:
              goto LAB_0009adbc;
            case -0x6a:
            case -0x68:
              bVar47 = 'B' < cVar15;
              break;
            case -0x69:
              bVar47 = (bool)(bVar16 ^ 1);
              break;
            case -0x5c:
              if (('B' < cVar15) && (*(short *)(pcVar10 + 0x20) < 0)) goto LAB_0009adb4;
              goto LAB_0009adbc;
            }
            if (bVar47) {
LAB_0009adb4:
              *(undefined1 *)(iVar20 + uVar35) = 0x41;
            }
LAB_0009adbc:
            uVar35 = uVar35 + 1;
            local_154 = local_154 + 4;
          } while (uVar45 != uVar35);
        }
        if ((uVar6 == 0) || (iVar20 == 0)) {
          local_144 = 0;
        }
        else {
          local_144 = FUN_000300b0();
        }
        if (local_128 == 0) {
          iVar34 = param_5[4];
        }
        else {
          iVar34 = param_5[10];
        }
        if (local_120 == (int *)0x0) {
          if (bVar13) {
            FUN_00049630(local_168 + local_118);
            local_140 = 1;
            uVar35 = local_118 + 1;
            local_154 = 0;
          }
          else if (local_128 == 0) {
            local_140 = 0;
            local_154 = 1;
            uVar35 = local_118;
          }
          else {
            uVar35 = local_118 + 1;
            FUN_00049630(local_168 + local_118);
            local_140 = 0;
            local_154 = 1;
          }
        }
        else {
          local_154 = (uint)((*(byte *)(local_120 + 3) & 0x28) != 0);
          pcVar10 = *(char **)(*local_120 + 0x10);
          FUN_00095030((uint)uVar7);
          if ((*(byte *)((int)local_120 + 0xb) & 1) != 0) {
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);
            }
            uVar35 = param_5[0xb];
            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;
            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;
          }
          iVar21 = FUN_0001fe30();
          if (iVar21 != 0) {
            FUN_00049630(iVar34);
          }
          if (iVar20 != 0) {
            FUN_0002e510();
          }
          cVar15 = *pcVar10;
          uVar35 = uVar7 + local_118;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 == -0x52) {
            iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009c725:
            if (1 < iVar21) {
              local_140 = 0;
              local_154 = 1;
              goto LAB_0009be0e;
            }
          }
          else if (cVar15 == -0x78) {
            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
            goto LAB_0009c725;
          }
          FUN_00020250();
          local_140 = 0;
        }
LAB_0009be0e:
        FUN_00049800(iVar20);
        if ((*(ushort *)(iVar42 + 0x2a) == 0) || (*(ushort *)(iVar42 + 0x2a) != uVar35)) {
          if ((*(byte *)(iVar42 + 0x26) & 4) != 0) {
            FUN_00049630(0);
          }
          if (local_128 == 0) {
            FUN_00068470(iVar34,local_168,uVar35);
          }
          else {
            FUN_00049630(local_128);
            FUN_00068470(iVar34,local_168,uVar35);
            FUN_00049630(param_2[0x1a] + 2);
            FUN_00068470(iVar34,local_168,uVar35 - local_154);
          }
        }
        if (local_12c == (int *)0x0) {
          if (bVar48) {
            if (local_128 == 0) {
              FUN_00049630(local_118 + local_168);
            }
            local_118 = local_118 + 1;
          }
        }
        else {
          pcVar10 = *(char **)(*local_12c + 0x10);
          FUN_00095030((uint)uVar6);
          if ((*(byte *)((int)local_12c + 0xb) & 1) != 0) {
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + (param_2[0x1a] * 5 + -5) * 4);
            }
            uVar35 = param_5[0xb];
            *(ushort *)(puVar26 + 2) = (ushort)uVar35 & 1;
            *(uint *)(puVar26 + 0xc) = uVar35 >> 1;
          }
          iVar21 = FUN_0001fe30();
          if (iVar21 != 0) {
            FUN_00049630(iVar34);
          }
          if (local_144 != 0) {
            FUN_0002e510();
            FUN_00049800(local_144);
          }
          cVar15 = *pcVar10;
          local_118 = uVar6 + local_118;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 == -0x52) {
            iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009d041:
            if (1 < iVar21) goto LAB_0009bf64;
          }
          else if (cVar15 == -0x78) {
            iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
            goto LAB_0009d041;
          }
          FUN_00020250();
        }
LAB_0009bf64:
        if (iVar20 != 0) {
          FUN_00023410();
        }
        if (local_144 != 0) {
          FUN_00023410();
        }
        param_5[0xf] = param_2[0x1a];
        if (local_118 != 0) {
          if (local_128 != 0) {
            FUN_00049630(param_2[0x1a] + 3);
          }
          FUN_00068470(iVar34,local_168,local_118);
        }
        if (local_128 != 0) {
          FUN_00049630(param_2[0x1a] + 2);
          FUN_00068470(iVar34,local_168,local_118 + local_140);
        }
        uVar35 = *(uint *)(iVar42 + 0x24);
        if ((uVar35 & 0x40000) != 0) {
          FUN_00049630(1);
          uVar35 = *(uint *)(iVar42 + 0x24);
        }
        if (((uVar35 & 0x40) == 0) || ((*(byte *)(param_3 + 10) & 0x20) != 0)) {
          if ((*(byte *)(*(int *)(local_158 + 0xc) + 0x24) & 0x80) == 0) {
            if (((*(ushort *)(param_3 + 10) & 0x400) != 0) ||
               (((*(ushort *)(param_3 + 10) & 0x1000) != 0 &&
                ((*(char *)((int)param_3 + 0x2e) == '\x01' || (*(short *)(iVar42 + 0x28) == 0))))))
            {
              iVar20 = param_1[0xb] + 1;
              param_1[0xb] = iVar20;
              FUN_00049630(iVar20);
              FUN_000493f0(0,iVar20);
              goto LAB_0009ca27;
            }
            iVar20 = *param_3;
            *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 1;
            FUN_000493f0(0,iVar9);
            if ((*(byte *)(param_3 + 10) & 0x20) == 0) {
              bVar48 = false;
              goto LAB_0009c03e;
            }
            iVar34 = *(int *)(iVar20 + 0x74);
            if (iVar34 == 0) {
              iVar34 = iVar20;
            }
            if (*(int *)(iVar34 + 0x50) == 0) {
              iVar20 = *(int *)(local_158 + 0xc);
              piVar31 = (int *)FUN_0004e890();
              if (piVar31 != (int *)0x0) {
                *piVar31 = (int)*(short *)(iVar20 + 0x2a);
                uVar32 = *(ushort *)(local_158 + 0x34);
                if (1 < uVar32) {
                  iVar34 = *(int *)(local_158 + 4);
                  iVar21 = 0;
                  do {
                    sVar17 = *(short *)(iVar34 + iVar21 * 2);
                    iVar21 = iVar21 + 1;
                    if ((*(byte *)(iVar20 + 0x24) & 0x20) == 0) {
                      if (-1 < sVar17) goto LAB_0009d40b;
                    }
                    else if (-1 < sVar17) {
                      sVar17 = FUN_00025700();
LAB_0009d40b:
                      piVar31[sVar17 + 1] = iVar21;
                    }
                  } while (uVar32 - 1 != iVar21);
                }
                FUN_000436c0(0xfffffff1);
              }
              goto LAB_0009ca27;
            }
            if (*param_5 == 0) goto LAB_0009c8ce;
          }
          else {
            if (iVar9 != iVar41) {
              iVar20 = *(int *)(*(int *)(local_158 + 0xc) + 8);
              if (iVar20 != 0) {
LAB_0009c96b:
                if ((*(byte *)(iVar20 + 0x37) & 3) != 2) goto LAB_0009c960;
                iVar34 = FUN_00025510();
                if (*(short *)(iVar20 + 0x32) == 0) {
                  uVar35 = 0;
                }
                else {
                  iVar21 = 0;
                  do {
                    sVar17 = *(short *)(*(int *)(iVar20 + 4) + iVar21 * 2);
                    if (*(ushort *)(local_158 + 0x34) == 0) {
LAB_0009c9d1:
                      uVar35 = 0xffffffff;
                    }
                    else {
                      uVar35 = 0;
                      if (sVar17 != **(short **)(local_158 + 4)) {
                        do {
                          uVar35 = uVar35 + 1;
                          if (uVar35 == *(ushort *)(local_158 + 0x34)) goto LAB_0009c9d1;
                        } while (sVar17 != (*(short **)(local_158 + 4))[uVar35]);
                        uVar35 = (uint)(short)uVar35;
                      }
                    }
                    iVar22 = iVar34 + iVar21;
                    iVar21 = iVar21 + 1;
                    FUN_000493f0(uVar35,iVar22);
                    uVar35 = (uint)*(ushort *)(iVar20 + 0x32);
                  } while (iVar21 < (int)uVar35);
                }
                FUN_00068470(iVar40,iVar34,uVar35);
                goto LAB_0009ca27;
              }
LAB_0009ca50:
                    /* WARNING: Does not return */
              pcVar12 = (code *)invalidInstructionException();
              (*pcVar12)();
            }
LAB_0009ca27:
            if (*param_5 == 0) {
              if ((*(byte *)(param_3 + 10) & 0x20) == 0) {
                bVar48 = false;
                goto LAB_0009c049;
              }
LAB_0009c8ce:
              bVar48 = false;
              goto LAB_0009c1d7;
            }
          }
          bVar48 = false;
        }
        else {
          bVar48 = true;
LAB_0009c03e:
          if (*param_5 == 0) {
LAB_0009c049:
            iVar20 = *(int *)(local_158 + 0x28);
            if ((iVar20 != 0) || ((*(byte *)(local_158 + 0x38) & 4) != 0)) {
              iVar34 = *(int *)(local_158 + 0xc);
              uVar35 = 0;
              do {
                *(undefined4 *)((int)local_f0 + uVar35) = 0;
                uVar35 = uVar35 + 4;
              } while (uVar35 < 0x18);
              local_d8 = &local_d4;
              local_bc = *(undefined4 *)*param_3;
              local_17c = (uint)*(ushort *)(local_158 + 0x34);
              local_d0 = iVar9;
              local_cc = iVar41;
              local_c0 = param_3;
              if (*(ushort *)(local_158 + 0x34) != 0) {
                iVar21 = 0;
                do {
                  sVar17 = *(short *)(*(int *)(local_158 + 4) + iVar21 * 2);
                  iVar22 = (int)sVar17;
                  if (sVar17 == -2) {
                    local_d4 = *(int *)(iVar20 + 4 + iVar21 * 0x10);
                    local_a4 = CONCAT22(local_a4._2_2_,1);
                    local_a0 = (int *)0x0;
                    local_b0 = FUN_0001fe20;
                    local_b4 = FUN_0002a790;
                    if (local_d4 != 0) {
                      FUN_0004c8d0();
                      if ((short)local_a4 == 0) {
                        pcVar12 = FUN_00061900;
                        iVar22 = local_c4;
                        goto LAB_0009c17b;
                      }
                      goto LAB_0009c1b2;
                    }
                  }
                  else if ((-1 < sVar17) &&
                          (iVar43 = *(int *)(iVar34 + 4) + iVar22 * 0x14,
                          (*(byte *)(iVar43 + 0x10) & 0x20) != 0)) {
                    iVar43 = *(int *)(iVar43 + 8);
                    pcVar12 = FUN_00032b10;
                    if (iVar43 != 0) {
                      iVar27 = 0;
                      do {
                        uVar35 = (uint)*(byte *)(iVar43 + iVar27);
                        if (uVar35 == (byte)"BINARY"[iVar27]) {
                          if (uVar35 == 0) break;
                        }
                        else if ((&DAT_000dc6c0)[uVar35] != (&DAT_000dc6c0)[(byte)"BINARY"[iVar27]])
                        goto LAB_0009c1bb;
                        iVar27 = iVar27 + 1;
                      } while( true );
                    }
LAB_0009c17b:
                    local_c4 = iVar22;
                    local_f0[1] = pcVar12;
                    local_c8 = iVar21;
                    if (param_3[4] != 0) {
                      FUN_0004c8d0();
                    }
                    FUN_0004c9a0();
                    FUN_0004c9a0();
LAB_0009c1b2:
                    local_17c = (uint)*(ushort *)(local_158 + 0x34);
                  }
LAB_0009c1bb:
                  iVar21 = iVar21 + 1;
                } while (iVar21 < (int)local_17c);
              }
            }
LAB_0009c1d7:
            if (*(int *)(local_158 + 0x24) != 0) {
              FUN_00062f10();
            }
          }
        }
        uVar35 = *(uint *)(iVar42 + 0x24);
        if ((uVar35 & 0x1000) == 0) {
          *(char *)((int)param_5 + 0x35) = (uVar33 == 0) + '\x04';
        }
        else {
          *(undefined1 *)((int)param_5 + 0x35) = 0xad;
        }
        param_5[0xe] = iVar41;
        *(byte *)((int)param_5 + 0x36) = (byte)(uVar35 >> 0x10) & 1;
        if ((uVar35 & 0xf) == 0) {
          *(undefined1 *)((int)param_5 + 0x37) = 1;
        }
        if (!bVar48) {
          local_194 = (uint *)0x1;
          goto LAB_0009b1f0;
        }
      }
      else {
        iVar41 = **(int **)(iVar42 + 0x30);
        iVar20 = param_1[0xb] + 1;
        param_1[0xb] = iVar20;
        iVar42 = FUN_0009a2d0(0,uVar33,iVar20);
        if ((iVar20 != iVar42) && (iVar20 != 0)) {
          FUN_000254e0();
        }
        FUN_000493f0(param_5[4],iVar42);
        *(undefined1 *)((int)param_5 + 0x35) = 0xad;
        if ((*(uint *)(iVar41 + 0x2c) & param_5[0x14]) == 0 &&
            (*(uint *)(iVar41 + 0x28) & param_5[0x13]) == 0) {
          *(ushort *)(iVar41 + 10) = *(ushort *)(iVar41 + 10) | 4;
          local_158 = 0;
          local_194 = (uint *)0x2;
          goto LAB_0009b1f0;
        }
      }
    }
    else {
      uVar35 = (uint)*(ushort *)(iVar42 + 0x28);
      iVar20 = FUN_00025510();
      local_154 = param_5[3];
      if (uVar35 != 0) {
        uVar45 = 0;
        do {
          while( true ) {
            iVar34 = *(int *)(*(int *)(iVar42 + 0x30) + uVar45 * 4);
            if (iVar34 != 0) break;
LAB_0009af14:
            uVar45 = uVar45 + 1;
            if (uVar35 == uVar45) goto LAB_0009af4f;
          }
          if ((*(byte *)(iVar34 + 0xc) & 1) != 0) {
            FUN_0009a2d0(uVar45,uVar33,iVar20 + 2 + uVar45);
            local_154 = param_5[4];
            goto LAB_0009af14;
          }
          uVar45 = uVar45 + 1;
          FUN_00095030(1);
        } while (uVar35 != uVar45);
      }
LAB_0009af4f:
      FUN_00049630(iVar20);
      FUN_00049630(iVar20 + 1);
      cVar15 = *(char *)(iVar42 + 0x1c);
      FUN_000493f0(local_154,iVar20);
      FUN_000436c0(-(uint)(cVar15 == '\0') | 0xfffffff9);
      *(undefined1 *)(iVar42 + 0x1c) = 0;
      param_5[0xe] = iVar9;
      uVar35 = uVar35 - 1;
      iVar34 = uVar35 * 4;
      *(byte *)((int)param_5 + 0x35) = (-(*(char *)((int)param_3 + 0x2e) == '\0') & 0x90U) + 0xad;
      local_184 = param_5[0x10];
      param_5[0xf] = param_2[0x1a];
      for (; uVar35 != 0xffffffff; uVar35 = uVar35 - 1) {
        while (piVar31 = *(int **)(*(int *)(iVar42 + 0x30) + iVar34),
              (*(byte *)(piVar31 + 3) & 1) != 0) {
          local_184 = local_184 + -1;
          if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0))
          goto LAB_0009b18a;
          pcVar10 = *(char **)(*piVar31 + 0xc);
          cVar15 = *pcVar10;
          if (cVar15 == -0x53) {
            cVar15 = pcVar10[2];
          }
          if (cVar15 != -0x52) {
            if (cVar15 == -0x78) {
              iVar21 = **(int **)(*(int *)(pcVar10 + 0x14) + 0x1c);
              goto LAB_0009bc51;
            }
LAB_0009b066:
            if (*(char *)(iVar41 + 0x4d) == '\0') {
              iVar21 = *(int *)(local_184 * 0x14 + param_5[0x11] + 4);
              if (iVar21 < 0) {
                iVar21 = param_2[0x1a] + -1;
              }
              puVar26 = &DAT_001075d0;
              if (*(char *)(*param_2 + 0x4d) == '\0') {
                puVar26 = (undefined1 *)(param_2[0x19] + iVar21 * 0x14);
              }
              FUN_000493f0(*(undefined4 *)(puVar26 + 8),*(undefined4 *)(puVar26 + 0xc));
            }
            iVar21 = FUN_000556e0();
            if (iVar21 != 0) {
              *(undefined4 *)(iVar21 + 0xc) = *(undefined4 *)(*piVar31 + 0xc);
              local_b8 = 0;
              local_b4 = (code *)0x0;
              iVar22 = FUN_0002fd80();
              *(int *)(iVar21 + 0x10) = iVar22;
              if (iVar22 != 0) {
                *(uint *)(iVar22 + 0x1c) = iVar20 + 2 + uVar35;
                FUN_00092bc0(param_1,iVar21,param_5[6],0x10);
              }
              *(undefined4 *)(iVar21 + 0xc) = 0;
              FUN_00053f30();
            }
            goto LAB_0009b15d;
          }
          iVar21 = **(int **)(pcVar10 + 0x14);
LAB_0009bc51:
          if (iVar21 == 1) goto LAB_0009b066;
          uVar35 = uVar35 - 1;
          iVar34 = iVar34 + -4;
          if (uVar35 == 0xffffffff) goto LAB_0009b1e0;
        }
        if (((int)uVar35 < 0x10) && ((*(ushort *)(iVar42 + 0x1e) >> (uVar35 & 0x1f) & 1) != 0)) {
LAB_0009b18a:
          FUN_00020250();
        }
LAB_0009b15d:
        iVar34 = iVar34 + -4;
      }
    }
LAB_0009b1e0:
    local_158 = 0;
    local_194 = (uint *)0x2;
  }
  else {
    FUN_000493f0(0,*(undefined4 *)(iVar34 + 0x20));
    iVar41 = FUN_00049630(iVar20);
    param_5[0xf] = iVar41;
    *(undefined1 *)((int)param_5 + 0x35) = 0xb;
    local_158 = 0;
    local_194 = (uint *)0x2;
  }
LAB_0009b1f0:
  do {
    iVar41 = param_3[0x15];
    piVar31 = (int *)param_3[0x17];
    if (iVar41 < 1) goto LAB_0009b538;
    local_17c = 0;
    do {
      while (uVar32 = *(ushort *)((int)piVar31 + 10), uVar35 = local_17c, (uVar32 & 6) != 0) {
LAB_0009b2d5:
        local_17c = uVar35;
        piVar31 = piVar31 + 0xc;
        iVar41 = iVar41 + -1;
        if (iVar41 == 0) goto LAB_0009b30a;
      }
      if ((piVar31[0xb] & param_5[0x14]) == 0 && (piVar31[10] & param_5[0x13]) == 0) {
        iVar42 = *piVar31;
        if (((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) != 0) &&
           ((*(byte *)(iVar42 + 4) & 1) == 0)) goto LAB_0009b2d5;
        if (local_194 == (uint *)0x1) {
          local_d0 = param_5[1];
          uVar45 = 0;
          do {
            *(undefined4 *)((int)&local_b8 + uVar45) = 0;
            uVar45 = uVar45 + 4;
          } while (uVar45 < 0x18);
          local_d4 = local_158;
          local_b4 = FUN_00025680;
          local_a0 = &local_d4;
          if (iVar42 != 0) {
            FUN_0004c8d0();
            if ((short)local_a4 != 0) {
              local_17c = 2;
              uVar35 = local_17c;
              goto LAB_0009b2d5;
            }
          }
          uVar32 = *(ushort *)((int)piVar31 + 10);
LAB_0009b594:
          if ((uVar32 & 0x1000) != 0) {
            uVar35 = 3;
            if (local_17c != 0) {
              uVar35 = local_17c;
            }
            goto LAB_0009b2d5;
          }
        }
        else if (local_194 != (uint *)0x3) goto LAB_0009b594;
        if (((uVar32 & 0x200) == 0) || (param_5[0xb] == 0)) {
          FUN_00092bc0(param_1,iVar42,iVar40,0x10);
        }
        else {
          iVar20 = FUN_00049630(0);
          FUN_00092bc0(param_1,iVar42,iVar40,0x10);
          if (iVar20 != 0) {
            if (iVar20 < 0) {
              iVar20 = param_2[0x1a] + -1;
            }
            puVar26 = &DAT_001075d0;
            if (*(char *)(*param_2 + 0x4d) == '\0') {
              puVar26 = (undefined1 *)(param_2[0x19] + iVar20 * 0x14);
            }
            *(int *)(puVar26 + 8) = param_2[0x1a];
          }
        }
        *(ushort *)((int)piVar31 + 10) = *(ushort *)((int)piVar31 + 10) | 4;
        goto LAB_0009b2d5;
      }
      piVar31 = piVar31 + 0xc;
      *(byte *)(param_3 + 0xc) = *(byte *)(param_3 + 0xc) | 2;
      iVar41 = iVar41 + -1;
    } while (iVar41 != 0);
LAB_0009b30a:
    local_194 = (uint *)local_17c;
  } while (local_17c != 0);
  iVar41 = param_3[0x15];
  piVar31 = (int *)param_3[0x17];
  if (0 < iVar41) {
    do {
      if (((((*(byte *)((int)piVar31 + 10) & 6) == 0) && ((*(ushort *)(piVar31 + 3) & 0x82) != 0))
          && ((*(ushort *)(piVar31 + 3) & 0x800) != 0)) &&
         ((piVar31[5] == iVar9 && ((*(byte *)(uVar18 * 0x44 + iVar8 + 0x2c) & 8) == 0)))) {
        iVar42 = *piVar31;
        local_70 = 0x83;
        local_6c = 0;
        local_7c = 0;
        local_78 = 0;
        local_74 = 0x100;
        local_72 = 1;
        local_84 = piVar1;
        local_80 = piVar1;
        local_68 = iVar9;
        if (piVar31[7] != -2) {
          local_3c = (undefined2)piVar31[7];
          puVar23 = (undefined4 *)FUN_00061a10();
          if (puVar23 != (undefined4 *)0x0) {
            puVar39 = (undefined4 *)0x0;
            do {
              if ((param_7 & puVar23[9]) == 0 && (param_6 & puVar23[8]) == 0) {
                if ((puVar23[9] == 0 && puVar23[8] == 0) && ((*(byte *)(puVar23 + 3) & 0x82) != 0))
                goto LAB_0009b454;
                if (puVar39 == (undefined4 *)0x0) {
                  puVar39 = puVar23;
                }
              }
              puVar23 = (undefined4 *)FUN_00061a10();
            } while (puVar23 != (undefined4 *)0x0);
            puVar23 = puVar39;
            if (puVar39 != (undefined4 *)0x0) {
LAB_0009b454:
              if (((*(byte *)((int)puVar23 + 10) & 4) == 0) &&
                 (((piVar24 = (int *)*puVar23, (*(byte *)(puVar23 + 3) & 1) == 0 ||
                   ((*(byte *)((int)piVar24 + 5) & 8) == 0)) || (**(int **)(piVar24[5] + 0x1c) < 2))
                 )) {
                local_b8 = *piVar24;
                local_b4 = (code *)piVar24[1];
                local_b0 = (code *)piVar24[2];
                local_a8 = piVar24[4];
                local_a4 = piVar24[5];
                local_a0 = (int *)piVar24[6];
                local_9c = piVar24[7];
                local_98 = piVar24[8];
                local_94 = piVar24[9];
                local_90 = piVar24[10];
                local_8c = piVar24[0xb];
                local_88 = piVar24[0xc];
                local_ac = *(undefined4 *)(iVar42 + 0xc);
                FUN_00092bc0(param_1,&local_b8,iVar40,0x10);
              }
            }
          }
        }
      }
      piVar31 = piVar31 + 0xc;
      iVar41 = iVar41 + -1;
    } while (iVar41 != 0);
  }
LAB_0009b538:
  if (*param_5 == 0) {
    param_6 = param_5[0x13];
    param_7 = param_5[0x14];
  }
  else {
    param_5[7] = param_2[0x1a];
    FUN_00049630(*param_5);
    param_7 = param_5[0x14];
    iVar41 = param_3[0x15];
    puVar23 = (undefined4 *)param_3[0x17];
    param_6 = param_5[0x13];
    if (0 < iVar41) {
      iVar42 = 0;
      do {
        if (((*(byte *)((int)puVar23 + 10) & 6) == 0) &&
           ((puVar23[0xb] & param_7) == 0 && (puVar23[10] & param_6) == 0)) {
          FUN_00092bc0(param_1,*puVar23,iVar40,0x10);
          *(ushort *)((int)puVar23 + 10) = *(ushort *)((int)puVar23 + 10) | 4;
          iVar41 = param_3[0x15];
          param_6 = param_5[0x13];
          param_7 = param_5[0x14];
        }
        iVar42 = iVar42 + 1;
        puVar23 = puVar23 + 0xc;
      } while (iVar42 < iVar41);
    }
  }
LAB_0009b549:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000d1450();
  }
  return CONCAT44(param_7,param_6);
LAB_0009c960:
  iVar20 = *(int *)(iVar20 + 0x14);
  if (iVar20 == 0) goto LAB_0009ca50;
  goto LAB_0009c96b;
}

